bus: imx-weim: optionally enable burst clock mode
To enable burst clock mode, add the fsl,burst-clk-enable property to the weim bus's devicetree node. Example: weim: weim@21b8000 { compatible = "fsl,imx6q-weim"; reg = <0x021b8000 0x4000>; clocks = <&clks 196>; #address-cells = <2>; #size-cells = <1>; ranges = <0 0 0x08000000 0x08000000>; fsl,weim-cs-gpr = <&gpr>; fsl,burst-clk-enable; client-device@0,0 { compatible = "something"; reg = <0 0 0x02000000>; #address-cells = <1>; #size-cells = <1>; bank-width = <2>; fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000 0x0000c000 0x1404a38e 0x00000000>; }; }; Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com> Reviewed-by: Fabio Estevam <festevam@gmail.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
parent
d43dc52274
commit
77266e722f
|
@ -19,6 +19,8 @@ struct imx_weim_devtype {
|
||||||
unsigned int cs_count;
|
unsigned int cs_count;
|
||||||
unsigned int cs_regs_count;
|
unsigned int cs_regs_count;
|
||||||
unsigned int cs_stride;
|
unsigned int cs_stride;
|
||||||
|
unsigned int wcr_offset;
|
||||||
|
unsigned int wcr_bcm;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct imx_weim_devtype imx1_weim_devtype = {
|
static const struct imx_weim_devtype imx1_weim_devtype = {
|
||||||
|
@ -37,6 +39,8 @@ static const struct imx_weim_devtype imx50_weim_devtype = {
|
||||||
.cs_count = 4,
|
.cs_count = 4,
|
||||||
.cs_regs_count = 6,
|
.cs_regs_count = 6,
|
||||||
.cs_stride = 0x18,
|
.cs_stride = 0x18,
|
||||||
|
.wcr_offset = 0x90,
|
||||||
|
.wcr_bcm = BIT(0),
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct imx_weim_devtype imx51_weim_devtype = {
|
static const struct imx_weim_devtype imx51_weim_devtype = {
|
||||||
|
@ -192,6 +196,7 @@ static int __init weim_parse_dt(struct platform_device *pdev,
|
||||||
struct device_node *child;
|
struct device_node *child;
|
||||||
int ret, have_child = 0;
|
int ret, have_child = 0;
|
||||||
struct cs_timing_state ts = {};
|
struct cs_timing_state ts = {};
|
||||||
|
u32 reg;
|
||||||
|
|
||||||
if (devtype == &imx50_weim_devtype) {
|
if (devtype == &imx50_weim_devtype) {
|
||||||
ret = imx_weim_gpr_setup(pdev);
|
ret = imx_weim_gpr_setup(pdev);
|
||||||
|
@ -199,6 +204,17 @@ static int __init weim_parse_dt(struct platform_device *pdev,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (of_property_read_bool(pdev->dev.of_node, "fsl,burst-clk-enable")) {
|
||||||
|
if (devtype->wcr_bcm) {
|
||||||
|
reg = readl(base + devtype->wcr_offset);
|
||||||
|
writel(reg | devtype->wcr_bcm,
|
||||||
|
base + devtype->wcr_offset);
|
||||||
|
} else {
|
||||||
|
dev_err(&pdev->dev, "burst clk mode not supported.\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for_each_available_child_of_node(pdev->dev.of_node, child) {
|
for_each_available_child_of_node(pdev->dev.of_node, child) {
|
||||||
ret = weim_timing_setup(&pdev->dev, child, base, devtype, &ts);
|
ret = weim_timing_setup(&pdev->dev, child, base, devtype, &ts);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
Loading…
Reference in New Issue