From: Lothar Waßmann Date: Thu, 26 Feb 2015 11:34:13 +0000 (+0100) Subject: mxc: vpu: remove iramsize property from DT and set it in the driver based on 'compati... X-Git-Tag: KARO-TX6-2015-02-27~1 X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-linux.git;a=commitdiff_plain;h=faf606927e4115a8351aef137199afa274265894 mxc: vpu: remove iramsize property from DT and set it in the driver based on 'compatible' property --- diff --git a/arch/arm/boot/dts/imx6dl.dtsi b/arch/arm/boot/dts/imx6dl.dtsi index 64cb6789a9df..6ac2b46ada2e 100644 --- a/arch/arm/boot/dts/imx6dl.dtsi +++ b/arch/arm/boot/dts/imx6dl.dtsi @@ -126,7 +126,6 @@ aips1: aips-bus@02000000 { vpu@02040000 { compatible = "fsl,imx6dl-vpu"; - iramsize = <0>; status = "okay"; }; diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi index 29df3615fbf8..441d90a77240 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi @@ -331,7 +331,6 @@ interrupt-names = "vpu_jpu_irq", "vpu_ipi_irq"; clocks = <&clks 168>, <&clks 140>, <&clks 142>; clock-names = "vpu_clk", "mmdc_ch0_axi", "ocram"; - iramsize = <0x21000>; iram = <&ocram>; resets = <&src 1>; pu-supply = <®_pu>; diff --git a/drivers/mxc/vpu/mxc_vpu.c b/drivers/mxc/vpu/mxc_vpu.c index bad40d16c8a2..dbb08c4055cb 100644 --- a/drivers/mxc/vpu/mxc_vpu.c +++ b/drivers/mxc/vpu/mxc_vpu.c @@ -93,6 +93,7 @@ struct mxc_vpu_soc_data { is_mx6dl:1, is_mx6q:1, has_jpu:1; + size_t iramsize; }; static struct gen_pool *iram_pool; @@ -757,6 +758,7 @@ static const struct mxc_vpu_soc_data imx6q_vpu_data = { .regulator_required = 1, .vpu_pwr_mgmnt = 1, .has_jpu = 1, + .iramsize = 0x21000, }; static const struct mxc_vpu_soc_data imx53_vpu_data = { @@ -785,9 +787,7 @@ static int vpu_dev_probe(struct platform_device *pdev) int err = 0; struct device *temp_class; struct resource *res; - unsigned long addr = 0; struct device_node *np = pdev->dev.of_node; - u32 iramsize; struct vpu_priv *drv_data; const struct of_device_id *of_id = of_match_device(vpu_of_match, &pdev->dev); @@ -804,28 +804,21 @@ static int vpu_dev_probe(struct platform_device *pdev) drv_data->workqueue = create_workqueue("vpu_wq"); INIT_WORK(&drv_data->work, vpu_worker_callback); - err = of_property_read_u32(np, "iramsize", &iramsize); - if (!err && iramsize) { + if (soc_data->iramsize) { iram_pool = of_get_named_gen_pool(np, "iram", 0); if (!iram_pool) { dev_err(&pdev->dev, "iram pool not available\n"); return -ENOMEM; } - iram_base = gen_pool_alloc(iram_pool, iramsize); + iram_base = gen_pool_alloc(iram_pool, soc_data->iramsize); if (!iram_base) { dev_err(&pdev->dev, "unable to alloc iram\n"); return -ENOMEM; } - addr = gen_pool_virt_to_phys(iram_pool, iram_base); - } - - if (addr == 0) - iram.start = iram.end = 0; - else { - iram.start = addr; - iram.end = addr + iramsize - 1; + iram.start = gen_pool_virt_to_phys(iram_pool, iram_base); + iram.end = iram.start + soc_data->iramsize - 1; } vpu_dev = &pdev->dev;