linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs
@ 2015-10-01 21:22 Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 1/5] gxt4500: enable on non-PPC architectures Ondrej Zary
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Ondrej Zary @ 2015-10-01 21:22 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: =Tomi Valkeinen, linux-fbdev, Kernel development list

Fire GL2 AGP has GXT6000P and is a x86 card but the gxt4500 driver is
currently limited to PPC.

This patch series makes the driver work on x86, fixes some color problems
and enhances performance.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/5] gxt4500: enable on non-PPC architectures
  2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
@ 2015-10-01 21:22 ` Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 2/5] gxt4500: fix 16bpp 565 mode Ondrej Zary
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ondrej Zary @ 2015-10-01 21:22 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: =Tomi Valkeinen, linux-fbdev, Kernel development list

These chips can be present at least on x86 too - Fire GL2 AGP has GXT6000P but
this driver is currently limited to PPC.
Enable it for all architectures and add chip configuration for little-endian.

Tested on x86 with Fire GL2 AGP.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/video/fbdev/Kconfig   |    5 +++--
 drivers/video/fbdev/gxt4500.c |    7 +++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 8b1d371..10ff920 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -2132,7 +2132,7 @@ config FB_UDL
 
 config FB_IBM_GXT4500
 	tristate "Framebuffer support for IBM GXT4000P/4500P/6000P/6500P adaptors"
-	depends on FB && PPC
+	depends on FB
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
@@ -2140,7 +2140,8 @@ config FB_IBM_GXT4500
 	  Say Y here to enable support for the IBM GXT4000P/6000P and
 	  GXT4500P/6500P display adaptor based on Raster Engine RC1000,
 	  found on some IBM System P (pSeries) machines. This driver
-	  doesn't use Geometry Engine GT1000.
+	  doesn't use Geometry Engine GT1000. This driver also supports
+	  AGP Fire GL2/3/4 cards on x86.
 
 config FB_PS3
 	tristate "PS3 GPU framebuffer driver"
diff --git a/drivers/video/fbdev/gxt4500.c b/drivers/video/fbdev/gxt4500.c
index f19133a..ae68696 100644
--- a/drivers/video/fbdev/gxt4500.c
+++ b/drivers/video/fbdev/gxt4500.c
@@ -670,8 +670,15 @@ static int gxt4500_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	pci_set_drvdata(pdev, info);
 
+#ifdef __BIG_ENDIAN
 	/* Set byte-swapping for DFA aperture for all pixel sizes */
 	pci_write_config_dword(pdev, CFG_ENDIAN0, 0x333300);
+#else /* __LITTLE_ENDIAN */
+	/* not sure what this means but fgl23 driver does that */
+	pci_write_config_dword(pdev, CFG_ENDIAN0, 0x2300);
+/*	pci_write_config_dword(pdev, CFG_ENDIAN0 + 4, 0x400000);*/
+	pci_write_config_dword(pdev, CFG_ENDIAN0 + 8, 0x98530000);
+#endif
 
 	info->fbops = &gxt4500_ops;
 	info->flags = FBINFO_FLAG_DEFAULT;
-- 
Ondrej Zary


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/5] gxt4500: fix 16bpp 565 mode
  2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 1/5] gxt4500: enable on non-PPC architectures Ondrej Zary
@ 2015-10-01 21:22 ` Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 3/5] gxt4500: fix color order Ondrej Zary
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ondrej Zary @ 2015-10-01 21:22 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: =Tomi Valkeinen, linux-fbdev, Kernel development list

Fix wrong colors in 16bpp 565 mode.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/video/fbdev/gxt4500.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/gxt4500.c b/drivers/video/fbdev/gxt4500.c
index ae68696..3c481d0 100644
--- a/drivers/video/fbdev/gxt4500.c
+++ b/drivers/video/fbdev/gxt4500.c
@@ -525,7 +525,7 @@ static int gxt4500_setcolreg(unsigned int reg, unsigned int red,
 		u32 val = reg;
 		switch (par->pixfmt) {
 		case DFA_PIX_16BIT_565:
-			val |= (reg << 11) | (reg << 6);
+			val |= (reg << 11) | (reg << 5);
 			break;
 		case DFA_PIX_16BIT_1555:
 			val |= (reg << 10) | (reg << 5);
-- 
Ondrej Zary


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 3/5] gxt4500: fix color order
  2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 1/5] gxt4500: enable on non-PPC architectures Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 2/5] gxt4500: fix 16bpp 565 mode Ondrej Zary
@ 2015-10-01 21:22 ` Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 4/5] gxt4500: Use arch_phys_wc_* for framebuffer Ondrej Zary
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Ondrej Zary @ 2015-10-01 21:22 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: =Tomi Valkeinen, linux-fbdev, Kernel development list

The color order in truecolor modes is wrong. This does not affect console but
is visible e.g. in X11 which has wrong colors.

Swap blue and red colors to fix the problem.
Fixes https://forums.gentoo.org/viewtopic-t-692740-start-0.html

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/video/fbdev/gxt4500.c |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/video/fbdev/gxt4500.c b/drivers/video/fbdev/gxt4500.c
index 3c481d0..3ceddb8 100644
--- a/drivers/video/fbdev/gxt4500.c
+++ b/drivers/video/fbdev/gxt4500.c
@@ -347,11 +347,12 @@ static void gxt4500_unpack_pixfmt(struct fb_var_screeninfo *var,
 		break;
 	}
 	if (pixfmt != DFA_PIX_8BIT) {
-		var->green.offset = var->red.length;
-		var->blue.offset = var->green.offset + var->green.length;
+		var->blue.offset = 0;
+		var->green.offset = var->blue.length;
+		var->red.offset = var->green.offset + var->green.length;
 		if (var->transp.length)
 			var->transp.offset =
-				var->blue.offset + var->blue.length;
+				var->red.offset + var->red.length;
 	}
 }
 
-- 
Ondrej Zary


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 4/5] gxt4500: Use arch_phys_wc_* for framebuffer
  2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
                   ` (2 preceding siblings ...)
  2015-10-01 21:22 ` [PATCH v2 3/5] gxt4500: fix color order Ondrej Zary
@ 2015-10-01 21:22 ` Ondrej Zary
  2015-10-01 21:22 ` [PATCH v2 5/5] gxt4500: enable panning Ondrej Zary
  2015-10-08  9:21 ` [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Tomi Valkeinen
  5 siblings, 0 replies; 7+ messages in thread
From: Ondrej Zary @ 2015-10-01 21:22 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: =Tomi Valkeinen, linux-fbdev, Kernel development list

Add arch_phys_wc_* calls to allow write-combining using MTRR.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/video/fbdev/gxt4500.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/gxt4500.c b/drivers/video/fbdev/gxt4500.c
index 3ceddb8..31de650 100644
--- a/drivers/video/fbdev/gxt4500.c
+++ b/drivers/video/fbdev/gxt4500.c
@@ -142,7 +142,7 @@ static const unsigned char watfmt[] = {
 
 struct gxt4500_par {
 	void __iomem *regs;
-
+	int wc_cookie;
 	int pixfmt;		/* pixel format, see DFA_PIX_* values */
 
 	/* PLL parameters */
@@ -671,6 +671,9 @@ static int gxt4500_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	pci_set_drvdata(pdev, info);
 
+	par->wc_cookie = arch_phys_wc_add(info->fix.smem_start,
+					  info->fix.smem_len);
+
 #ifdef __BIG_ENDIAN
 	/* Set byte-swapping for DFA aperture for all pixel sizes */
 	pci_write_config_dword(pdev, CFG_ENDIAN0, 0x333300);
@@ -735,6 +738,7 @@ static void gxt4500_remove(struct pci_dev *pdev)
 		return;
 	par = info->par;
 	unregister_framebuffer(info);
+	arch_phys_wc_del(par->wc_cookie);
 	fb_dealloc_cmap(&info->cmap);
 	iounmap(par->regs);
 	iounmap(info->screen_base);
-- 
Ondrej Zary


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 5/5] gxt4500: enable panning
  2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
                   ` (3 preceding siblings ...)
  2015-10-01 21:22 ` [PATCH v2 4/5] gxt4500: Use arch_phys_wc_* for framebuffer Ondrej Zary
@ 2015-10-01 21:22 ` Ondrej Zary
  2015-10-08  9:21 ` [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Tomi Valkeinen
  5 siblings, 0 replies; 7+ messages in thread
From: Ondrej Zary @ 2015-10-01 21:22 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: =Tomi Valkeinen, linux-fbdev, Kernel development list

The driver implements pan_display but the corresponding flags are not set.

Add FBINFO_HWACCEL_XPAN and FBINFO_HWACCEL_YPAN to flags to allow HW
accelerated panning (for fast scrolling).

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/video/fbdev/gxt4500.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/gxt4500.c b/drivers/video/fbdev/gxt4500.c
index 31de650..f438546 100644
--- a/drivers/video/fbdev/gxt4500.c
+++ b/drivers/video/fbdev/gxt4500.c
@@ -685,7 +685,8 @@ static int gxt4500_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 #endif
 
 	info->fbops = &gxt4500_ops;
-	info->flags = FBINFO_FLAG_DEFAULT;
+	info->flags = FBINFO_FLAG_DEFAULT | FBINFO_HWACCEL_XPAN |
+					    FBINFO_HWACCEL_YPAN;
 
 	err = fb_alloc_cmap(&info->cmap, 256, 0);
 	if (err) {
-- 
Ondrej Zary


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs
  2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
                   ` (4 preceding siblings ...)
  2015-10-01 21:22 ` [PATCH v2 5/5] gxt4500: enable panning Ondrej Zary
@ 2015-10-08  9:21 ` Tomi Valkeinen
  5 siblings, 0 replies; 7+ messages in thread
From: Tomi Valkeinen @ 2015-10-08  9:21 UTC (permalink / raw)
  To: Ondrej Zary, Paul Mackerras; +Cc: linux-fbdev, Kernel development list

[-- Attachment #1: Type: text/plain, Size: 299 bytes --]



On 02/10/15 00:22, Ondrej Zary wrote:
> Fire GL2 AGP has GXT6000P and is a x86 card but the gxt4500 driver is
> currently limited to PPC.
> 
> This patch series makes the driver work on x86, fixes some color problems
> and enhances performance.
> 

Thanks, applying for 4.4.

 Tomi


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-10-08  9:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-01 21:22 [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Ondrej Zary
2015-10-01 21:22 ` [PATCH v2 1/5] gxt4500: enable on non-PPC architectures Ondrej Zary
2015-10-01 21:22 ` [PATCH v2 2/5] gxt4500: fix 16bpp 565 mode Ondrej Zary
2015-10-01 21:22 ` [PATCH v2 3/5] gxt4500: fix color order Ondrej Zary
2015-10-01 21:22 ` [PATCH v2 4/5] gxt4500: Use arch_phys_wc_* for framebuffer Ondrej Zary
2015-10-01 21:22 ` [PATCH v2 5/5] gxt4500: enable panning Ondrej Zary
2015-10-08  9:21 ` [PATCH v2 0/5] [resend] gxt4500: Make usable on x86 and fix some bugs Tomi Valkeinen

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).