This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me --- drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk; + dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */ @@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size, - &fb_data->waveform_buffer_phys, - GFP_DMA | GFP_KERNEL); + &temp_addr, + GFP_DMA32 | GFP_KERNEL); + fb_data->waveform_buffer_phys = temp_addr; if (fb_data->waveform_buffer_virt == NULL) { dev_err(fb_data->dev, "Can't allocate mem for waveform!\n"); return; @@ -4946,6 +4948,7 @@ int mxc_epdc_fb_probe(struct platform_device *pdev) u32 val; int irq; struct device_node *np = pdev->dev.of_node; + dma_addr_t temp_addr;
fb_data = (struct mxc_epdc_fb_data *)framebuffer_alloc( sizeof(struct mxc_epdc_fb_data), &pdev->dev); @@ -5311,8 +5314,9 @@ int mxc_epdc_fb_probe(struct platform_device *pdev) /* Allocate memory for EPDC working buffer */ fb_data->working_buffer_virt = dma_alloc_coherent(&pdev->dev, fb_data->working_buffer_size, - &fb_data->working_buffer_phys, - GFP_DMA | GFP_KERNEL); + &temp_addr, + GFP_DMA32 | GFP_KERNEL); + fb_data->working_buffer_phys = temp_addr; if (fb_data->working_buffer_virt == NULL) { dev_err(&pdev->dev, "Can't allocate mem for working buf!\n"); ret = -ENOMEM;
On Sat, 12 Dec 2020 09:00:19 +0000 David Shah dave@ds0.me wrote:
This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me
drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk;
dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */
@@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size,
&fb_data->waveform_buffer_phys,
GFP_DMA | GFP_KERNEL);
&temp_addr,
GFP_DMA32 | GFP_KERNEL);
- fb_data->waveform_buffer_phys = temp_addr;
use dma_addr_t for waveform_buffer_phys. I thought it was already patched long ago. No need for temp_addr.
Regards, Andreas
Am 12.12.2020 um 10:07 schrieb Andreas Kemnade andreas@kemnade.info:
On Sat, 12 Dec 2020 09:00:19 +0000 David Shah dave@ds0.me wrote:
This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me
drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk;
dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */
@@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size,
&fb_data->waveform_buffer_phys,
GFP_DMA | GFP_KERNEL);
&temp_addr,
GFP_DMA32 | GFP_KERNEL);
- fb_data->waveform_buffer_phys = temp_addr;
use dma_addr_t for waveform_buffer_phys. I thought it was already patched long ago. No need for temp_addr.
Seems to be missing (also in letux-current).
Anyways for the pyra_defconfig this module can be completely disabled.
BR, Nikolaus
Am 12.12.2020 um 10:28 schrieb H. Nikolaus Schaller hns@goldelico.com:
Am 12.12.2020 um 10:07 schrieb Andreas Kemnade andreas@kemnade.info:
On Sat, 12 Dec 2020 09:00:19 +0000 David Shah dave@ds0.me wrote:
This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me
drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk;
dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */
@@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size,
&fb_data->waveform_buffer_phys,
GFP_DMA | GFP_KERNEL);
&temp_addr,
GFP_DMA32 | GFP_KERNEL);
- fb_data->waveform_buffer_phys = temp_addr;
use dma_addr_t for waveform_buffer_phys. I thought it was already patched long ago. No need for temp_addr.
Seems to be missing (also in letux-current).
Here is the code:
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/fbdev/m...
Only phys_addr_updbuf and phys_addr_copybuf are dma_addr_t.
Anyways for the pyra_defconfig this module can be completely disabled.
BR, Nikolaus
Kernel mailing list Kernel@pyra-handheld.com http://pyra-handheld.com/cgi-bin/mailman/listinfo/kernel
On Sat, 12 Dec 2020 10:34:20 +0100 "H. Nikolaus Schaller" hns@goldelico.com wrote:
Am 12.12.2020 um 10:28 schrieb H. Nikolaus Schaller hns@goldelico.com:
Am 12.12.2020 um 10:07 schrieb Andreas Kemnade andreas@kemnade.info:
On Sat, 12 Dec 2020 09:00:19 +0000 David Shah dave@ds0.me wrote:
This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me
drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk;
dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */
@@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size,
&fb_data->waveform_buffer_phys,
GFP_DMA | GFP_KERNEL);
&temp_addr,
GFP_DMA32 | GFP_KERNEL);
- fb_data->waveform_buffer_phys = temp_addr;
use dma_addr_t for waveform_buffer_phys. I thought it was already patched long ago. No need for temp_addr.
Seems to be missing (also in letux-current).
Here is the code:
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/fbdev/m...
Only phys_addr_updbuf and phys_addr_copybuf are dma_addr_t.
I pushed a fix.
Regards, Andreas
Hi,
Am 14.12.2020 um 09:25 schrieb Andreas Kemnade andreas@kemnade.info:
On Sat, 12 Dec 2020 10:34:20 +0100 "H. Nikolaus Schaller" hns@goldelico.com wrote:
Am 12.12.2020 um 10:28 schrieb H. Nikolaus Schaller hns@goldelico.com:
Am 12.12.2020 um 10:07 schrieb Andreas Kemnade andreas@kemnade.info:
On Sat, 12 Dec 2020 09:00:19 +0000 David Shah dave@ds0.me wrote:
This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me
drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk;
dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */
@@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size,
&fb_data->waveform_buffer_phys,
GFP_DMA | GFP_KERNEL);
&temp_addr,
GFP_DMA32 | GFP_KERNEL);
- fb_data->waveform_buffer_phys = temp_addr;
use dma_addr_t for waveform_buffer_phys. I thought it was already patched long ago. No need for temp_addr.
Seems to be missing (also in letux-current).
Here is the code:
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/fbdev/m...
Only phys_addr_updbuf and phys_addr_copybuf are dma_addr_t.
I pushed a fix.
Thanks! There was a unfortunate overlap with the build process which pulls the latest trees, does the rebase and finally pushes all back... So I have restored the patch.
Anyways, thanks! Nikolaus
On Sat, 12 Dec 2020 10:28:15 +0100 "H. Nikolaus Schaller" hns@goldelico.com wrote:
Am 12.12.2020 um 10:07 schrieb Andreas Kemnade andreas@kemnade.info:
On Sat, 12 Dec 2020 09:00:19 +0000 David Shah dave@ds0.me wrote:
This fixes mixing between u32 and dma_addr_t. I don't have hardware to test this on, so I can only confirm it builds.
Signed-off-by: David Shah dave@ds0.me
drivers/video/fbdev/mxc/mxc_epdc_fb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c index 005e276eb5da1..77df5ddf740c8 100644 --- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c +++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c @@ -4720,6 +4720,7 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, struct clk *epdc_parent; unsigned long rounded_parent_rate, epdc_pix_rate, rounded_pix_clk, target_pix_clk;
dma_addr_t temp_addr;
if (fw == NULL) { /* If default FW file load failed, we give up */
@@ -4762,8 +4763,9 @@ static void mxc_epdc_fb_fw_handler(const struct firmware *fw, /* Allocate memory for waveform data */ fb_data->waveform_buffer_virt = dma_alloc_coherent(fb_data->dev, fb_data->waveform_buffer_size,
&fb_data->waveform_buffer_phys,
GFP_DMA | GFP_KERNEL);
&temp_addr,
GFP_DMA32 | GFP_KERNEL);
- fb_data->waveform_buffer_phys = temp_addr;
use dma_addr_t for waveform_buffer_phys. I thought it was already patched long ago. No need for temp_addr.
Seems to be missing (also in letux-current).
ah, we have only commit 76f16ad2e9d32d8ca23b3117a48b1fc699e12766 Author: Andreas Kemnade andreas@kemnade.info Date: Tue Aug 18 22:32:04 2020 +0200
epdc_v2: fix dma types
most phys_addr stuff already was dma_addr_t but at some places u32 was used which is problematic if dma_addr_t is u64.
Signed-off-by: Andreas Kemnade andreas@kemnade.info
.. but not v1.
Regards, Andreas