* [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems
@ 2013-05-29 16:12 Michal Simek
2013-05-29 16:12 ` [PATCH 2/3] video: xilinxfb: Do not use out_be32 IO function Michal Simek
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Michal Simek @ 2013-05-29 16:12 UTC (permalink / raw)
To: linux-kernel
Cc: Michal Simek, Michal Simek, Pallav Joshi, git-dev,
Florian Tobias Schandinat, linux-fbdev
[-- Attachment #1: Type: text/plain, Size: 813 bytes --]
From: Michal Simek <monstr@monstr.eu>
DTB is always big-endian that's why is necessary
to convert it.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
drivers/video/xilinxfb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/xilinxfb.c b/drivers/video/xilinxfb.c
index af0b4fd..5af341e 100644
--- a/drivers/video/xilinxfb.c
+++ b/drivers/video/xilinxfb.c
@@ -428,7 +428,7 @@ static int xilinxfb_of_probe(struct platform_device *op)
* interface and initialize the tft_access accordingly.
*/
p = (u32 *)of_get_property(op->dev.of_node, "xlnx,dcr-splb-slave-if", NULL);
- tft_access = p ? *p : 0;
+ tft_access = p ? be32_to_cpup(p) : 0;
/*
* Fill the resource structure if its direct PLB interface
--
1.8.2.3
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] video: xilinxfb: Do not use out_be32 IO function
2013-05-29 16:12 [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Michal Simek
@ 2013-05-29 16:12 ` Michal Simek
2013-05-29 16:12 ` [PATCH 3/3] video: xilinxfb: Use driver for Xilinx ARM Zynq Michal Simek
2013-05-29 16:18 ` [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Sören Brinkmann
2 siblings, 0 replies; 4+ messages in thread
From: Michal Simek @ 2013-05-29 16:12 UTC (permalink / raw)
To: linux-kernel
Cc: Michal Simek, Michal Simek, Pallav Joshi, git-dev,
Florian Tobias Schandinat, linux-fbdev
[-- Attachment #1: Type: text/plain, Size: 3194 bytes --]
out_be32 IO function is not supported by ARM.
It is only available for PPC and Microblaze.
Remove all out_be32 references and start to use __raw_writel
function.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
drivers/video/xilinxfb.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/video/xilinxfb.c b/drivers/video/xilinxfb.c
index 5af341e..dcf0552 100644
--- a/drivers/video/xilinxfb.c
+++ b/drivers/video/xilinxfb.c
@@ -57,7 +57,7 @@
* In case of direct PLB access the second control register will be at
* an offset of 4 as compared to the DCR access where the offset is 1
* i.e. REG_CTRL. So this is taken care in the function
- * xilinx_fb_out_be32 where it left shifts the offset 2 times in case of
+ * xilinx_fb_out32 where it left shifts the offset 2 times in case of
* direct PLB access.
*/
#define NUM_REGS 2
@@ -150,11 +150,11 @@ struct xilinxfb_drvdata {
* To perform the read/write on the registers we need to check on
* which bus its connected and call the appropriate write API.
*/
-static void xilinx_fb_out_be32(struct xilinxfb_drvdata *drvdata, u32 offset,
+static void xilinx_fb_out32(struct xilinxfb_drvdata *drvdata, u32 offset,
u32 val)
{
if (drvdata->flags & PLB_ACCESS_FLAG)
- out_be32(drvdata->regs + (offset << 2), val);
+ __raw_writel(val, drvdata->regs + (offset << 2));
#ifdef CONFIG_PPC_DCR
else
dcr_write(drvdata->dcr_host, offset, val);
@@ -197,7 +197,7 @@ xilinx_fb_blank(int blank_mode, struct fb_info *fbi)
switch (blank_mode) {
case FB_BLANK_UNBLANK:
/* turn on panel */
- xilinx_fb_out_be32(drvdata, REG_CTRL, drvdata->reg_ctrl_default);
+ xilinx_fb_out32(drvdata, REG_CTRL, drvdata->reg_ctrl_default);
break;
case FB_BLANK_NORMAL:
@@ -205,7 +205,7 @@ xilinx_fb_blank(int blank_mode, struct fb_info *fbi)
case FB_BLANK_HSYNC_SUSPEND:
case FB_BLANK_POWERDOWN:
/* turn off panel */
- xilinx_fb_out_be32(drvdata, REG_CTRL, 0);
+ xilinx_fb_out32(drvdata, REG_CTRL, 0);
default:
break;
@@ -280,13 +280,13 @@ static int xilinxfb_assign(struct device *dev,
memset_io((void __iomem *)drvdata->fb_virt, 0, fbsize);
/* Tell the hardware where the frame buffer is */
- xilinx_fb_out_be32(drvdata, REG_FB_ADDR, drvdata->fb_phys);
+ xilinx_fb_out32(drvdata, REG_FB_ADDR, drvdata->fb_phys);
/* Turn on the display */
drvdata->reg_ctrl_default = REG_CTRL_ENABLE;
if (pdata->rotate_screen)
drvdata->reg_ctrl_default |= REG_CTRL_ROTATE;
- xilinx_fb_out_be32(drvdata, REG_CTRL,
+ xilinx_fb_out32(drvdata, REG_CTRL,
drvdata->reg_ctrl_default);
/* Fill struct fb_info */
@@ -345,7 +345,7 @@ err_cmap:
iounmap(drvdata->fb_virt);
/* Turn off the display */
- xilinx_fb_out_be32(drvdata, REG_CTRL, 0);
+ xilinx_fb_out32(drvdata, REG_CTRL, 0);
err_fbmem:
if (drvdata->flags & PLB_ACCESS_FLAG)
@@ -381,7 +381,7 @@ static int xilinxfb_release(struct device *dev)
iounmap(drvdata->fb_virt);
/* Turn off the display */
- xilinx_fb_out_be32(drvdata, REG_CTRL, 0);
+ xilinx_fb_out32(drvdata, REG_CTRL, 0);
/* Release the resources, as allocated based on interface */
if (drvdata->flags & PLB_ACCESS_FLAG) {
--
1.8.2.3
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] video: xilinxfb: Use driver for Xilinx ARM Zynq
2013-05-29 16:12 [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Michal Simek
2013-05-29 16:12 ` [PATCH 2/3] video: xilinxfb: Do not use out_be32 IO function Michal Simek
@ 2013-05-29 16:12 ` Michal Simek
2013-05-29 16:18 ` [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Sören Brinkmann
2 siblings, 0 replies; 4+ messages in thread
From: Michal Simek @ 2013-05-29 16:12 UTC (permalink / raw)
To: linux-kernel
Cc: Michal Simek, Michal Simek, Pallav Joshi, git-dev,
Florian Tobias Schandinat, linux-fbdev
[-- Attachment #1: Type: text/plain, Size: 723 bytes --]
From: Michal Simek <monstr@monstr.eu>
Enable this driver for all Xilinx platforms.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---
drivers/video/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 2e937bd..2c301f8 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -2188,7 +2188,7 @@ config FB_PS3_DEFAULT_SIZE_M
config FB_XILINX
tristate "Xilinx frame buffer support"
- depends on FB && (XILINX_VIRTEX || MICROBLAZE)
+ depends on FB && (XILINX_VIRTEX || MICROBLAZE || ARCH_ZYNQ)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
--
1.8.2.3
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems
2013-05-29 16:12 [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Michal Simek
2013-05-29 16:12 ` [PATCH 2/3] video: xilinxfb: Do not use out_be32 IO function Michal Simek
2013-05-29 16:12 ` [PATCH 3/3] video: xilinxfb: Use driver for Xilinx ARM Zynq Michal Simek
@ 2013-05-29 16:18 ` Sören Brinkmann
2 siblings, 0 replies; 4+ messages in thread
From: Sören Brinkmann @ 2013-05-29 16:18 UTC (permalink / raw)
To: Michal Simek
Cc: linux-kernel, Michal Simek, Pallav Joshi, git-dev,
Florian Tobias Schandinat, linux-fbdev
On Wed, May 29, 2013 at 06:12:56PM +0200, Michal Simek wrote:
> From: Michal Simek <monstr@monstr.eu>
>
> DTB is always big-endian that's why is necessary
> to convert it.
>
> Signed-off-by: Michal Simek <monstr@monstr.eu>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
> drivers/video/xilinxfb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/video/xilinxfb.c b/drivers/video/xilinxfb.c
> index af0b4fd..5af341e 100644
> --- a/drivers/video/xilinxfb.c
> +++ b/drivers/video/xilinxfb.c
> @@ -428,7 +428,7 @@ static int xilinxfb_of_probe(struct platform_device *op)
> * interface and initialize the tft_access accordingly.
> */
> p = (u32 *)of_get_property(op->dev.of_node, "xlnx,dcr-splb-slave-if", NULL);
You should consider using 'of_property_read_u32() (or one of its other
variants for arrays, strings, etc). That already implicitly does the
endian conversion.
Sören
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-05-29 16:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-29 16:12 [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Michal Simek
2013-05-29 16:12 ` [PATCH 2/3] video: xilinxfb: Do not use out_be32 IO function Michal Simek
2013-05-29 16:12 ` [PATCH 3/3] video: xilinxfb: Use driver for Xilinx ARM Zynq Michal Simek
2013-05-29 16:18 ` [PATCH 1/3] video: xilinxfb: Fix OF probing on little-endian systems Sören Brinkmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).