[PATCH 1/2] video: fbdev: imxfb: support AUS mode

Subsystems: framebuffer layer, freescale imx / mxc framebuffer driver, the rest

STALE3393d

23 messages, 4 authors, 2017-04-21 · open the first message on its own page

[PATCH 1/2] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-02-27 11:36:48

Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS Mode Control Register's value depends on
the display mode.

Allow setting this register from the device tree. Make the device tree
node optional to keep the DT ABI stable. This register is available only
on imx21 and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
 drivers/video/fbdev/imxfb.c               | 19 +++++++++++++++++++
 include/linux/platform_data/video-imxfb.h |  1 +
 2 files changed, 20 insertions(+)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 1b0faad..a05cad4 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -117,6 +117,8 @@
 
 #define IMXFB_LSCR1_DEFAULT 0x00120300
 
+#define LCDC_LAUSCR	0x80
+
 /* Used fb-mode. Can be set on kernel command line, therefore file-static. */
 static const char *fb_mode;
 
@@ -158,6 +160,7 @@ struct imxfb_info {
 	dma_addr_t		dbar2;
 
 	u_int			pcr;
+	u_int			lauscr;
 	u_int			pwmr;
 	u_int			lscr1;
 	u_int			dmacr;
@@ -422,6 +425,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 	pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
 
 	fbi->pcr = pcr;
+	/*
+	 * The LCDC AUS Mode Control Register does not exist on imx1.
+	 */
+	if (!is_imx1_fb(fbi))
+		fbi->lauscr = imxfb_mode->lauscr;
 
 	/*
 	 * Copy the RGB parameters for this display
@@ -638,6 +646,9 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
 	if (fbi->dmacr)
 		writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
 
+	if (fbi->lauscr)
+		writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
+
 	return 0;
 }
 
@@ -707,6 +718,7 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	struct fb_videomode *of_mode = &imxfb_mode->mode;
 	u32 bpp;
 	u32 pcr;
+	u32 lauscr;
 
 	ret = of_property_read_string(np, "model", &of_mode->name);
 	if (ret)
@@ -734,6 +746,13 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	imxfb_mode->bpp = bpp;
 	imxfb_mode->pcr = pcr;
 
+	/*
+	 * fsl,lauscr is optional
+	 */
+	ret = of_property_read_u32(np, "fsl,lauscr", &lauscr);
+	if (ret = 0)
+		imxfb_mode->lauscr = lauscr;
+
 	return 0;
 }
 
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index a5c0a71..fdd2d4c 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -50,6 +50,7 @@
 struct imx_fb_videomode {
 	struct fb_videomode mode;
 	u32 pcr;
+	u32 lauscr;
 	unsigned char	bpp;
 };
 
-- 
2.1.4

[PATCH 2/2] dt-bindings: display: imx: entry for LAUSCR

From: Martin Kaiser <hidden>
Date: 2017-02-27 10:59:05

Allow setting the LCDC AUS Mode Control Register from the device tree.
This setting is optional, the register is available only on imx21 and
compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..bd5077f 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,lauscr: LCDC AUS Mode Control Register value (only for imx21)
 
 Optional properties:
 - lcd-supply: Regulator for LCD supply voltage.
-- 
2.1.4

Re: [PATCH 1/2] video: fbdev: imxfb: support AUS mode

From: Uwe Kleine-König <hidden>
Date: 2017-02-27 22:36:58

Hello,

given fbdev is orphaned
(http://git.kernel.org/linus/238600783d7470bec19350b0ee79e01825d3c84f)
I think it would be nice to move the imxfb driver over to drm.
I don't know much about drm, so I cannot say if that is easy or not, but
long term I think this is more robust than fbdev.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

Re: [PATCH 1/2] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-02-27 23:08:06

Hello Uwe,

Thus wrote Uwe Kleine-König (u.kleine-koenig@pengutronix.de):
given fbdev is orphaned
(http://git.kernel.org/linus/238600783d7470bec19350b0ee79e01825d3c84f)
fbdev is no longer orphaned, Bartlomiej is the new maintainer.
I think it would be nice to move the imxfb driver over to drm.
I don't know much about drm, so I cannot say if that is easy or not, but
long term I think this is more robust than fbdev.
I am aware that fbdev is in maintenance mode. However, I hope that small
modifications like the one I submitted are still possible.

In the long run, I agree that we should move imxfb to drm.

Best regards,
Martin

Re: [PATCH 1/2] video: fbdev: imxfb: support AUS mode

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2017-02-28 12:20:45

Hi,

On Monday, February 27, 2017 11:33:36 PM Martin Kaiser wrote:
Hello Uwe,

Thus wrote Uwe Kleine-König (u.kleine-koenig@pengutronix.de):
quoted
given fbdev is orphaned
(http://git.kernel.org/linus/238600783d7470bec19350b0ee79e01825d3c84f)
fbdev is no longer orphaned, Bartlomiej is the new maintainer.
quoted
I think it would be nice to move the imxfb driver over to drm.
I don't know much about drm, so I cannot say if that is easy or not, but
long term I think this is more robust than fbdev.
I am aware that fbdev is in maintenance mode. However, I hope that small
modifications like the one I submitted are still possible.
Yes, such changes are fine.

BTW Please merge both patches into one or at least make Cc:
list complete so people can see the whole context easily
(i.e. I didn't get patch #2 in my patches folder and Rob
didn't get patch #1).
In the long run, I agree that we should move imxfb to drm.

Best regards,
Martin
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

[PATCH v2] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-02-28 21:38:31

Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS Mode Control Register's value depends on
the display mode.

Allow setting this register from the device tree. Make the device tree
node optional to keep the DT ABI stable. This register is available only
on imx21 and compatible chipsets. Update the device tree bindings with
this info.

Signed-off-by: Martin Kaiser <redacted>
---
v2:
  re-sending DT bindings and code changes as one patch

 .../devicetree/bindings/display/imx/fsl,imx-fb.txt    |  2 ++
 drivers/video/fbdev/imxfb.c                           | 19 +++++++++++++++++++
 include/linux/platform_data/video-imxfb.h             |  1 +
 3 files changed, 22 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..bd5077f 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,lauscr: LCDC AUS Mode Control Register value (only for imx21)
 
 Optional properties:
 - lcd-supply: Regulator for LCD supply voltage.
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 1b0faad..a05cad4 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -117,6 +117,8 @@
 
 #define IMXFB_LSCR1_DEFAULT 0x00120300
 
+#define LCDC_LAUSCR	0x80
+
 /* Used fb-mode. Can be set on kernel command line, therefore file-static. */
 static const char *fb_mode;
 
@@ -158,6 +160,7 @@ struct imxfb_info {
 	dma_addr_t		dbar2;
 
 	u_int			pcr;
+	u_int			lauscr;
 	u_int			pwmr;
 	u_int			lscr1;
 	u_int			dmacr;
@@ -422,6 +425,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 	pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
 
 	fbi->pcr = pcr;
+	/*
+	 * The LCDC AUS Mode Control Register does not exist on imx1.
+	 */
+	if (!is_imx1_fb(fbi))
+		fbi->lauscr = imxfb_mode->lauscr;
 
 	/*
 	 * Copy the RGB parameters for this display
@@ -638,6 +646,9 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
 	if (fbi->dmacr)
 		writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
 
+	if (fbi->lauscr)
+		writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
+
 	return 0;
 }
 
@@ -707,6 +718,7 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	struct fb_videomode *of_mode = &imxfb_mode->mode;
 	u32 bpp;
 	u32 pcr;
+	u32 lauscr;
 
 	ret = of_property_read_string(np, "model", &of_mode->name);
 	if (ret)
@@ -734,6 +746,13 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	imxfb_mode->bpp = bpp;
 	imxfb_mode->pcr = pcr;
 
+	/*
+	 * fsl,lauscr is optional
+	 */
+	ret = of_property_read_u32(np, "fsl,lauscr", &lauscr);
+	if (ret = 0)
+		imxfb_mode->lauscr = lauscr;
+
 	return 0;
 }
 
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index a5c0a71..fdd2d4c 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -50,6 +50,7 @@
 struct imx_fb_videomode {
 	struct fb_videomode mode;
 	u32 pcr;
+	u32 lauscr;
 	unsigned char	bpp;
 };
 
-- 
2.1.4

Re: [PATCH 2/2] dt-bindings: display: imx: entry for LAUSCR

From: Rob Herring <robh@kernel.org>
Date: 2017-03-02 16:42:45

On Mon, Feb 27, 2017 at 11:56:42AM +0100, Martin Kaiser wrote:
quoted hunk
Allow setting the LCDC AUS Mode Control Register from the device tree.
This setting is optional, the register is available only on imx21 and
compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..bd5077f 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,lauscr: LCDC AUS Mode Control Register value (only for imx21)
Looks like we already got one, but generally we don't just put magic 
register values in the DT. What does this register control?

Re: [PATCH v2] video: fbdev: imxfb: support AUS mode

From: Rob Herring <robh@kernel.org>
Date: 2017-03-03 06:53:00

On Tue, Feb 28, 2017 at 09:04:16PM +0100, Martin Kaiser wrote:
Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS Mode Control Register's value depends on
the display mode.

Allow setting this register from the device tree. Make the device tree
node optional to keep the DT ABI stable. This register is available only
on imx21 and compatible chipsets. Update the device tree bindings with
this info.

Signed-off-by: Martin Kaiser <redacted>
---
v2:
  re-sending DT bindings and code changes as one patch
The opposite is what is prefered.
 .../devicetree/bindings/display/imx/fsl,imx-fb.txt    |  2 ++
 drivers/video/fbdev/imxfb.c                           | 19 +++++++++++++++++++
 include/linux/platform_data/video-imxfb.h             |  1 +
 3 files changed, 22 insertions(+)

Re: [PATCH v2] video: fbdev: imxfb: support AUS mode

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2017-03-03 08:56:25

Hi,

On Friday, March 03, 2017 12:21:30 AM Rob Herring wrote:
On Tue, Feb 28, 2017 at 09:04:16PM +0100, Martin Kaiser wrote:
quoted
Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS Mode Control Register's value depends on
the display mode.

Allow setting this register from the device tree. Make the device tree
node optional to keep the DT ABI stable. This register is available only
on imx21 and compatible chipsets. Update the device tree bindings with
this info.

Signed-off-by: Martin Kaiser <redacted>
---
v2:
  re-sending DT bindings and code changes as one patch
The opposite is what is prefered.
Do you mean that you want to have code adding bindings
and its documentation in separate patches (because that
is like it was before)?  This doesn't sound good for me
from kernel changes integrity POV but if this is what
you prefer I can live with that. ;)
quoted
 .../devicetree/bindings/display/imx/fsl,imx-fb.txt    |  2 ++
 drivers/video/fbdev/imxfb.c                           | 19 +++++++++++++++++++
 include/linux/platform_data/video-imxfb.h             |  1 +
 3 files changed, 22 insertions(+)
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

Re: [PATCH v2] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-03-04 08:39:12

Hi,

Thus wrote Bartlomiej Zolnierkiewicz (b.zolnierkie@samsung.com):
Do you mean that you want to have code adding bindings
and its documentation in separate patches (because that
is like it was before)?
ok, I'll send the next version as two patches again. Looks like we'll
need another iteration anyway.

Best regards,
Martin

Re: [PATCH 2/2] dt-bindings: display: imx: entry for LAUSCR

From: Martin Kaiser <hidden>
Date: 2017-03-04 09:35:13

Hi,

Thus wrote Rob Herring (robh@kernel.org):
On Mon, Feb 27, 2017 at 11:56:42AM +0100, Martin Kaiser wrote:
quoted
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,lauscr: LCDC AUS Mode Control Register value (only for imx21)
Looks like we already got one, but generally we don't just put magic 
register values in the DT. What does this register control?
it contains settings related to AUS mode. This mode sets different
mappings between framebuffer memory and display pixels. It seems that
these mappings were originally defined for displays from AUO.

The only bit from this register that I really need is "AUS mode on/off".
I could put this into the device tree instead of the entire register.

Best regards,
Martin

[PATCH 2/2 v3] dt-bindings: display: imx: entry for AUS mode

From: Martin Kaiser <hidden>
Date: 2017-03-08 19:05:05

Allow setting the AUS mode for a display from the device tree.
Use an optional boolean property. AUS mode can be set only on imx21
and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..cacae0e 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,aus_mode: boolean to enable AUS mode (only for imx21)
 
 Optional properties:
 - lcd-supply: Regulator for LCD supply voltage.
-- 
2.1.4

[PATCH 1/2 v3] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-03-08 20:05:57

Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS mode setting depends on the display
mode.

Allow setting AUS mode from the device tree by adding a boolean
property. Make this property optional to keep the DT ABI stable.
AUS mode can be set only on imx21 and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 drivers/video/fbdev/imxfb.c               | 17 +++++++++++++++++
 include/linux/platform_data/video-imxfb.h |  1 +
 2 files changed, 18 insertions(+)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 1b0faad..463fbf2 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -117,6 +117,9 @@
 
 #define IMXFB_LSCR1_DEFAULT 0x00120300
 
+#define LCDC_LAUSCR	0x80
+#define LAUSCR_AUS_MODE	(1<<31)
+
 /* Used fb-mode. Can be set on kernel command line, therefore file-static. */
 static const char *fb_mode;
 
@@ -158,6 +161,7 @@ struct imxfb_info {
 	dma_addr_t		dbar2;
 
 	u_int			pcr;
+	u_int			lauscr;
 	u_int			pwmr;
 	u_int			lscr1;
 	u_int			dmacr;
@@ -422,6 +426,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 	pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
 
 	fbi->pcr = pcr;
+	/*
+	 * The LCDC AUS Mode Control Register does not exist on imx1.
+	 */
+	if (!is_imx1_fb(fbi) && imxfb_mode->aus_mode)
+		fbi->lauscr = LAUSCR_AUS_MODE;
 
 	/*
 	 * Copy the RGB parameters for this display
@@ -638,6 +647,9 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
 	if (fbi->dmacr)
 		writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
 
+	if (fbi->lauscr)
+		writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
+
 	return 0;
 }
 
@@ -734,6 +746,11 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	imxfb_mode->bpp = bpp;
 	imxfb_mode->pcr = pcr;
 
+	/*
+	 * fsl,aus_mode is optional
+	 */
+	imxfb_mode->aus_mode = of_property_read_bool(np, "fsl,aus_mode");
+
 	return 0;
 }
 
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index a5c0a71..cf9348b 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -50,6 +50,7 @@
 struct imx_fb_videomode {
 	struct fb_videomode mode;
 	u32 pcr;
+	bool aus_mode;
 	unsigned char	bpp;
 };
 
-- 
2.1.4

Re: [PATCH 2/2 v3] dt-bindings: display: imx: entry for AUS mode

From: Rob Herring <robh@kernel.org>
Date: 2017-03-15 20:24:28

On Wed, Mar 08, 2017 at 07:22:56PM +0100, Martin Kaiser wrote:
quoted hunk
Allow setting the AUS mode for a display from the device tree.
Use an optional boolean property. AUS mode can be set only on imx21
and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..cacae0e 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,aus_mode: boolean to enable AUS mode (only for imx21)
fsl,aus-mode

With that,

Acked-by: Rob Herring <robh@kernel.org>

[PATCH 1/2 v3 resend] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-04-21 07:46:58

Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS mode setting depends on the display
mode.

Allow setting AUS mode from the device tree by adding a boolean
property. Make this property optional to keep the DT ABI stable.
AUS mode can be set only on imx21 and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
re-sending v3, rebased against current linux-next
it seems this got lost along the way, there was a bit of confusion
whether to split this in two patches or not

v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 drivers/video/fbdev/imxfb.c               | 17 +++++++++++++++++
 include/linux/platform_data/video-imxfb.h |  1 +
 2 files changed, 18 insertions(+)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 1b0faad..463fbf2 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -117,6 +117,9 @@
 
 #define IMXFB_LSCR1_DEFAULT 0x00120300
 
+#define LCDC_LAUSCR	0x80
+#define LAUSCR_AUS_MODE	(1<<31)
+
 /* Used fb-mode. Can be set on kernel command line, therefore file-static. */
 static const char *fb_mode;
 
@@ -158,6 +161,7 @@ struct imxfb_info {
 	dma_addr_t		dbar2;
 
 	u_int			pcr;
+	u_int			lauscr;
 	u_int			pwmr;
 	u_int			lscr1;
 	u_int			dmacr;
@@ -422,6 +426,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 	pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
 
 	fbi->pcr = pcr;
+	/*
+	 * The LCDC AUS Mode Control Register does not exist on imx1.
+	 */
+	if (!is_imx1_fb(fbi) && imxfb_mode->aus_mode)
+		fbi->lauscr = LAUSCR_AUS_MODE;
 
 	/*
 	 * Copy the RGB parameters for this display
@@ -638,6 +647,9 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
 	if (fbi->dmacr)
 		writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
 
+	if (fbi->lauscr)
+		writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
+
 	return 0;
 }
 
@@ -734,6 +746,11 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	imxfb_mode->bpp = bpp;
 	imxfb_mode->pcr = pcr;
 
+	/*
+	 * fsl,aus_mode is optional
+	 */
+	imxfb_mode->aus_mode = of_property_read_bool(np, "fsl,aus_mode");
+
 	return 0;
 }
 
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index a5c0a71..cf9348b 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -50,6 +50,7 @@
 struct imx_fb_videomode {
 	struct fb_videomode mode;
 	u32 pcr;
+	bool aus_mode;
 	unsigned char	bpp;
 };
 
-- 
2.1.4

[PATCH 2/2 v3 resend] dt-bindings: display: imx: entry for AUS mode

From: Martin Kaiser <hidden>
Date: 2017-04-21 07:47:02

Allow setting the AUS mode for a display from the device tree.
Use an optional boolean property. AUS mode can be set only on imx21
and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
Acked-by: Rob Herring <robh@kernel.org>
---
re-sending v3, rebased against current linux-next
it seems this got lost along the way, there was a bit of confusion
whether to split this in two patches or not

v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..cacae0e 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,aus_mode: boolean to enable AUS mode (only for imx21)
 
 Optional properties:
 - lcd-supply: Regulator for LCD supply voltage.
-- 
2.1.4

Re: [PATCH 1/2 v3 resend] video: fbdev: imxfb: support AUS mode

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2017-04-21 09:33:24

Hi,

On Friday, April 21, 2017 09:45:52 AM Martin Kaiser wrote:
Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS mode setting depends on the display
mode.

Allow setting AUS mode from the device tree by adding a boolean
property. Make this property optional to keep the DT ABI stable.
AUS mode can be set only on imx21 and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
re-sending v3, rebased against current linux-next
it seems this got lost along the way, there was a bit of confusion
whether to split this in two patches or not
It hadn't been lost, I've been waiting on v4, please see:

https://lkml.org/lkml/2017/3/15/709

[ Rob has requested rename of the property to "fsl,aus-mode". ]

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

[PATCH 1/2 v4] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-04-21 10:29:53

Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS mode setting depends on the display
mode.

Allow setting AUS mode from the device tree by adding a boolean
property. Make this property optional to keep the DT ABI stable.
AUS mode can be set only on imx21 and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
---
v4:
   rename the DT property to fsl,aus-mode

v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 drivers/video/fbdev/imxfb.c               | 17 +++++++++++++++++
 include/linux/platform_data/video-imxfb.h |  1 +
 2 files changed, 18 insertions(+)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 1b0faad..c166e07 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -117,6 +117,9 @@
 
 #define IMXFB_LSCR1_DEFAULT 0x00120300
 
+#define LCDC_LAUSCR	0x80
+#define LAUSCR_AUS_MODE	(1<<31)
+
 /* Used fb-mode. Can be set on kernel command line, therefore file-static. */
 static const char *fb_mode;
 
@@ -158,6 +161,7 @@ struct imxfb_info {
 	dma_addr_t		dbar2;
 
 	u_int			pcr;
+	u_int			lauscr;
 	u_int			pwmr;
 	u_int			lscr1;
 	u_int			dmacr;
@@ -422,6 +426,11 @@ static int imxfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 	pcr |= imxfb_mode->pcr & ~(0x3f | (7 << 25));
 
 	fbi->pcr = pcr;
+	/*
+	 * The LCDC AUS Mode Control Register does not exist on imx1.
+	 */
+	if (!is_imx1_fb(fbi) && imxfb_mode->aus_mode)
+		fbi->lauscr = LAUSCR_AUS_MODE;
 
 	/*
 	 * Copy the RGB parameters for this display
@@ -638,6 +647,9 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf
 	if (fbi->dmacr)
 		writel(fbi->dmacr, fbi->regs + LCDC_DMACR);
 
+	if (fbi->lauscr)
+		writel(fbi->lauscr, fbi->regs + LCDC_LAUSCR);
+
 	return 0;
 }
 
@@ -734,6 +746,11 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
 	imxfb_mode->bpp = bpp;
 	imxfb_mode->pcr = pcr;
 
+	/*
+	 * fsl,aus-mode is optional
+	 */
+	imxfb_mode->aus_mode = of_property_read_bool(np, "fsl,aus-mode");
+
 	return 0;
 }
 
diff --git a/include/linux/platform_data/video-imxfb.h b/include/linux/platform_data/video-imxfb.h
index a5c0a71..cf9348b 100644
--- a/include/linux/platform_data/video-imxfb.h
+++ b/include/linux/platform_data/video-imxfb.h
@@ -50,6 +50,7 @@
 struct imx_fb_videomode {
 	struct fb_videomode mode;
 	u32 pcr;
+	bool aus_mode;
 	unsigned char	bpp;
 };
 
-- 
2.1.4

[PATCH 2/2] dt-bindings: display: imx: entry for AUS mode

From: Martin Kaiser <hidden>
Date: 2017-04-21 10:30:02

Allow setting AUS mode for a display from the device tree. Use an
optional boolean property. AUS mode can be set only on imx21 and
compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
Acked-by: Rob Herring <robh@kernel.org>
---
v4:
   rename the DT property to fsl,aus-mode

v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..e5a8b36 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,aus-mode: boolean to enable AUS mode (only for imx21)
 
 Optional properties:
 - lcd-supply: Regulator for LCD supply voltage.
-- 
2.1.4

Re: [PATCH 1/2 v3 resend] video: fbdev: imxfb: support AUS mode

From: Martin Kaiser <hidden>
Date: 2017-04-21 10:31:12

Thus wrote Bartlomiej Zolnierkiewicz (b.zolnierkie@samsung.com):
It hadn't been lost, I've been waiting on v4, please see:
https://lkml.org/lkml/2017/3/15/709
[ Rob has requested rename of the property to "fsl,aus-mode". ]
Sorry, I didn't notice that Rob wanted me to rename the property. I just
sent out v4.

Thanks,
Martin

[PATCH 2/2 v4] dt-bindings: display: imx: entry for AUS mode

From: Martin Kaiser <hidden>
Date: 2017-04-21 12:31:19

Allow setting AUS mode for a display from the device tree. Use an
optional boolean property. AUS mode can be set only on imx21 and
compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
Acked-by: Rob Herring <robh@kernel.org>
---
sending this again, I missed the v4 in the Subject line

v4:
   rename the DT property to fsl,aus-mode

v3:
   use a boolean DT property instead of the register value
   separate patches for DT binding and code changes

v2:
   re-sending DT bindings and code changes as one patch

 Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
index 7a5c0e2..e5a8b36 100644
--- a/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
+++ b/Documentation/devicetree/bindings/display/imx/fsl,imx-fb.txt
@@ -13,6 +13,8 @@ Required nodes:
 	Additional, the display node has to define properties:
 	- bits-per-pixel: Bits per pixel
 	- fsl,pcr: LCDC PCR value
+	A display node may optionally define
+	- fsl,aus-mode: boolean to enable AUS mode (only for imx21)
 
 Optional properties:
 - lcd-supply: Regulator for LCD supply voltage.
-- 
2.1.4

Re: [PATCH 1/2 v4] video: fbdev: imxfb: support AUS mode

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2017-04-21 15:22:05

On Friday, April 21, 2017 12:29:08 PM Martin Kaiser wrote:
Some displays require setting AUS mode in the LDCD AUS Mode Control
Register to work with the imxfb driver. Like the value of the Panel
Configuration Register, the AUS mode setting depends on the display
mode.

Allow setting AUS mode from the device tree by adding a boolean
property. Make this property optional to keep the DT ABI stable.
AUS mode can be set only on imx21 and compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
Patch queued for 4.12, thanks.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

Re: [PATCH 2/2 v4] dt-bindings: display: imx: entry for AUS mode

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2017-04-21 18:27:34

On Friday, April 21, 2017 02:29:50 PM Martin Kaiser wrote:
Allow setting AUS mode for a display from the device tree. Use an
optional boolean property. AUS mode can be set only on imx21 and
compatible chipsets.

Signed-off-by: Martin Kaiser <redacted>
Acked-by: Rob Herring <robh@kernel.org>
Patch queued for 4.12, thanks.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help