Re: [PATCH 3/7] ARM: configs: imx_v6_v7: Enable DRM_DW_HDMI

2024-04-21 Thread Shawn Guo
On Wed, Apr 03, 2024 at 12:56:21PM +0200, Maxime Ripard wrote:
> Commit 4fc8cb47fcfd ("drm/display: Move HDMI helpers into display-helper
> module") turned the DRM_DW_HDMI dependency of DRM_IMX_HDMI into a
> depends on which ended up disabling the driver in the defconfig. Make
> sure it's still enabled.
> 
> Fixes: 4fc8cb47fcfd ("drm/display: Move HDMI helpers into display-helper 
> module")
> Reported-by: Mark Brown 
> Reported-by: Alexander Stein 
> Signed-off-by: Maxime Ripard 

Acked-by: Shawn Guo 



Re: [PATCH RFC for upstream 4/4] arm64: defconfig: enable i.MX8MP ldb bridge

2024-02-06 Thread Shawn Guo
On Fri, Jan 26, 2024 at 09:57:26AM +0100, Yannic Moog wrote:
> Enable the i.MX8MP LDB driver used for display support of the i.MX8MP
> LVDS interface.
> 
> Signed-off-by: Yannic Moog 

Applied, thanks!



Re: [PATCH RFC for upstream 3/4] arm64: dts: imx8mp-phyboard-pollux-rdk: add etml panel support

2024-02-06 Thread Shawn Guo
On Fri, Jan 26, 2024 at 09:57:25AM +0100, Yannic Moog wrote:
> The imx8mp-phyboard-pollux has on-board lvds interface connections. An
> edt,etml1010g3dra panel is supported for this interface. Add device tree
> nodes for backlight and panel.
> 
> Signed-off-by: Yannic Moog 

Applied, thanks!



Re: [PATCH 2/2] ARM: dts: imx7: add MIPI-DSI support

2023-12-05 Thread Shawn Guo
On Mon, Nov 27, 2023 at 05:12:29PM +0100, Roland Hieber wrote:
> From: Marco Felsch 
> 
> This adds the device tree support for the MIPI-DSI block. The block can
> be used as encoder for the parallel signals coming from the lcdif block.
> 
> Signed-off-by: Marco Felsch 
> Signed-off-by: Roland Hieber 

Applied this one, thanks!


Re: [PATCH 2/2] ARM: dts: imx: add support for the ATM0700D4 panel attached to sk-imx53

2023-09-24 Thread Shawn Guo
On Sun, Aug 27, 2023 at 12:54:29AM +0300, Dmitry Baryshkov wrote:
> The SK-ATM0700D4-Plug is an extension board (provided by the same
> manufacturer, [1]) which can be connected to the SK-IMX53 panel kit. The
> panel can be connected either using the RGB parallel bus or using the
> LVDS connector (recommended). Add DT files describing this "shield",
> both RGB and LVDS connections.
> 
> [1] http://starterkit.ru/html/index.php?name=shop=view=64
> 
> Signed-off-by: Dmitry Baryshkov 

Applied, thanks!


Re: [PATCH v3 3/6] ARM: dts: freescale: Use new media bus type macros

2023-01-24 Thread Shawn Guo
On Thu, Jun 16, 2022 at 01:14:07AM +0300, Laurent Pinchart wrote:
> Now that a header exists with macros for the media interface bus-type
> values, replace hardcoding numerical constants with the corresponding
> macros in the DT sources.
> 
> Signed-off-by: Laurent Pinchart 

Applied, thanks!


Re: [PATCH v1 8/8] ARM: dts: imx6qdl-victgo: add CAN termination support

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:12AM +0100, Oleksij Rempel wrote:
> From: David Jander 
> 
> The gpio1 0 pin is controlling CAN termination, not USB H1 VBUS. So,
> remove wrong regulator and assign this gpio to new DT CAN termination
> property.
> 
> Signed-off-by: David Jander 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 7/8] ARM: dts: imx6dl-victgo: The TGO uses a lg,lb070wv8 compatible 7" display

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:11AM +0100, Oleksij Rempel wrote:
> From: Robin van der Gracht 
> 
> This series of devices is using lg,lb070wv8 instead of kyo,tcg121xglp.
> 
> Signed-off-by: Robin van der Gracht 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 6/8] ARM: dts: imx6dl-victgo: Add interrupt-counter nodes

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:10AM +0100, Oleksij Rempel wrote:
> From: Robin van der Gracht 
> 
> Interrupt counter is mainlined, now we can add missing counter nodes.
> 
> Signed-off-by: Robin van der Gracht 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 4/8] ARM: dts: imx6qdl-vicut1: update gpio-line-names for some GPIOs

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:08AM +0100, Oleksij Rempel wrote:
> From: David Jander 
> 
> countedX lines have different board names (YACO_x). And REV_ and BOARD_ pins
> have multiple functions. So, use names exposed to the OS.
> 
> Signed-off-by: David Jander 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 3/8] ARM: dts: imx6qdl-vicut1/vicutgo: Add backlight_led node

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:07AM +0100, Oleksij Rempel wrote:
> From: David Jander 
> 
> backlight_led is the dimmable backlight for the rubber border on the case. It
> is also used to highlight the power- and some other buttons.
> 
> MX6QDL_PAD_SD4_DAT1__PWM3_OUT is also assigned as output for pwm3. Since
> we need pwm3 for the backlight, we're forced to disable user space hardware
> revision detection. The bootloader will have to supply this information
> (i.e. through device tree).
> 
> Signed-off-by: David Jander 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 2/8] ARM: dts: imx6qdl-vicut1/vicutgo: Rename backlight to backlight_lcd

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:06AM +0100, Oleksij Rempel wrote:
> From: David Jander 
> 
> We have two backlight sources on this boards. Use more specific name for
> the LCD backlight to see the difference.
> 
> Signed-off-by: David Jander 
> Signed-off-by: Robin van der Gracht 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 1/8] ARM: dts: imx6qdl-vicut1/vicutgo: Set default backlight brightness to maximum

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:05AM +0100, Oleksij Rempel wrote:
> From: David Jander 
> 
> Recover default behavior of the device and set maximal brightness
> 
> Signed-off-by: David Jander 
> Signed-off-by: Oleksij Rempel 

Applied, thanks!


Re: [PATCH v1 5/8] ARM: dts: imx6qdl-vicut1/vicutgo: The sgtl5000 uses i2s not ac97

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:09AM +0100, Oleksij Rempel wrote:
> From: Robin van der Gracht 
> 
> According to Documentation/devicetree/bindings/sound/fsl,ssi.txt
> 'fsl,mode' should be specified for AC97 mode only.
> 
> The 'fsl,ssi' documentation doesn't say anything about specifying
> 'sound-dai-cells' so we'll remove that as well.

Hmm, what needs to be fixed is fsl,ssi binding doc, I think.

Shawn

> 
> Signed-off-by: Robin van der Gracht 
> Signed-off-by: Oleksij Rempel 
> ---
>  arch/arm/boot/dts/imx6dl-victgo.dts   | 2 --
>  arch/arm/boot/dts/imx6qdl-vicut1.dtsi | 2 --
>  2 files changed, 4 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6dl-victgo.dts 
> b/arch/arm/boot/dts/imx6dl-victgo.dts
> index d542ddad4e32..20c7f80e5ec9 100644
> --- a/arch/arm/boot/dts/imx6dl-victgo.dts
> +++ b/arch/arm/boot/dts/imx6dl-victgo.dts
> @@ -591,8 +591,6 @@  {
>  };
>  
>   {
> - #sound-dai-cells = <0>;
> - fsl,mode = "ac97-slave";
>   status = "okay";
>  };
>  
> diff --git a/arch/arm/boot/dts/imx6qdl-vicut1.dtsi 
> b/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> index ec39008c0950..97ef8264947a 100644
> --- a/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> @@ -466,8 +466,6 @@  {
>  };
>  
>   {
> - #sound-dai-cells = <0>;
> - fsl,mode = "ac97-slave";
>   status = "okay";
>  };
>  
> -- 
> 2.30.2
> 


Re: [PATCH v1 1/8] ARM: dts: imx6qdl-vicut1/vicutgo: Set default backlight brightness to maximum

2022-04-05 Thread Shawn Guo
On Wed, Apr 6, 2022 at 9:23 AM Shawn Guo  wrote:
>
> On Mon, Feb 21, 2022 at 10:53:05AM +0100, Oleksij Rempel wrote:
> > From: David Jander 
> >
> > Recover default behavior of the device and set maximal brightness
> >
> > Signed-off-by: David Jander 
> > Signed-off-by: Oleksij Rempel 
> > ---
> >  arch/arm/boot/dts/imx6dl-victgo.dts   | 2 +-
> >  arch/arm/boot/dts/imx6qdl-vicut1.dtsi | 2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm/boot/dts/imx6dl-victgo.dts 
> > b/arch/arm/boot/dts/imx6dl-victgo.dts
> > index 227c952543d4..e6134efbfabd 100644
> > --- a/arch/arm/boot/dts/imx6dl-victgo.dts
> > +++ b/arch/arm/boot/dts/imx6dl-victgo.dts
> > @@ -28,7 +28,7 @@ backlight: backlight {
> >   pwms = < 0 500 0>;
> >   brightness-levels = <0 16 64 255>;
> >   num-interpolated-steps = <16>;
> > - default-brightness-level = <1>;
> > + default-brightness-level = <48>;
>
> Please take a look at the documentation of the property.
>
>   default-brightness-level:
> description:
>   The default brightness level (index into the array defined by the
>   "brightness-levels" property).

Ah, never mind, I missed 'num-interpolated-steps' there.

Shawn


Re: [PATCH v1 1/8] ARM: dts: imx6qdl-vicut1/vicutgo: Set default backlight brightness to maximum

2022-04-05 Thread Shawn Guo
On Mon, Feb 21, 2022 at 10:53:05AM +0100, Oleksij Rempel wrote:
> From: David Jander 
> 
> Recover default behavior of the device and set maximal brightness
> 
> Signed-off-by: David Jander 
> Signed-off-by: Oleksij Rempel 
> ---
>  arch/arm/boot/dts/imx6dl-victgo.dts   | 2 +-
>  arch/arm/boot/dts/imx6qdl-vicut1.dtsi | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6dl-victgo.dts 
> b/arch/arm/boot/dts/imx6dl-victgo.dts
> index 227c952543d4..e6134efbfabd 100644
> --- a/arch/arm/boot/dts/imx6dl-victgo.dts
> +++ b/arch/arm/boot/dts/imx6dl-victgo.dts
> @@ -28,7 +28,7 @@ backlight: backlight {
>   pwms = < 0 500 0>;
>   brightness-levels = <0 16 64 255>;
>   num-interpolated-steps = <16>;
> - default-brightness-level = <1>;
> + default-brightness-level = <48>;

Please take a look at the documentation of the property.

  default-brightness-level:
description:
  The default brightness level (index into the array defined by the
  "brightness-levels" property).

Shawn

>   power-supply = <_3v3>;
>   enable-gpios = < 28 GPIO_ACTIVE_HIGH>;
>   };
> diff --git a/arch/arm/boot/dts/imx6qdl-vicut1.dtsi 
> b/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> index 1ac7e13249d2..c1d06bc28c67 100644
> --- a/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> @@ -23,7 +23,7 @@ backlight: backlight {
>   pwms = < 0 500 0>;
>   brightness-levels = <0 16 64 255>;
>   num-interpolated-steps = <16>;
> - default-brightness-level = <1>;
> + default-brightness-level = <48>;
>   power-supply = <_3v3>;
>   enable-gpios = < 28 GPIO_ACTIVE_HIGH>;
>   };
> -- 
> 2.30.2
> 


Re: [PATCH v3 3/5] ARM: dts: imx6qdl-vicut1: add CAN termination support

2022-02-12 Thread Shawn Guo
On Fri, Feb 11, 2022 at 02:30:33PM +0100, Oleksij Rempel wrote:
> The gpio1 0 pin is controlling CAN termination, not USB H1 VBUS. So,
> remove wrong regulator and assign this gpio to new DT CAN termnation

Sigh, the typo is still there with a new version.

Fixed it up and applied the series.

Shawn

> property.
> 
> Signed-off-by: Oleksij Rempel 
> ---
>  arch/arm/boot/dts/imx6qdl-vicut1.dtsi | 12 ++--
>  1 file changed, 2 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6qdl-vicut1.dtsi 
> b/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> index b9e305774fed..1ac7e13249d2 100644
> --- a/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl-vicut1.dtsi
> @@ -126,15 +126,6 @@ reg_3v3: regulator-3v3 {
>   regulator-max-microvolt = <330>;
>   };
>  
> - reg_h1_vbus: regulator-h1-vbus {
> - compatible = "regulator-fixed";
> - regulator-name = "h1-vbus";
> - regulator-min-microvolt = <500>;
> - regulator-max-microvolt = <500>;
> - gpio = < 0 GPIO_ACTIVE_HIGH>;
> - enable-active-high;
> - };
> -
>   reg_otg_vbus: regulator-otg-vbus {
>   compatible = "regulator-fixed";
>   regulator-name = "otg-vbus";
> @@ -212,6 +203,8 @@ IMX_AUDMUX_V2_PTCR_SYN
> IMX_AUDMUX_V2_PDCR_RXDSEL(0)
>   {
>   pinctrl-names = "default";
>   pinctrl-0 = <_can1>;
> + termination-gpios = < 0 GPIO_ACTIVE_LOW>;
> + termination-ohms = <150>;
>   status = "okay";
>  };
>  
> @@ -492,7 +485,6 @@  {
>  };
>  
>   {
> - vbus-supply = <_h1_vbus>;
>   pinctrl-names = "default";
>   phy_type = "utmi";
>   dr_mode = "host";
> -- 
> 2.30.2
> 


Re: [PATCH v2 2/5] ARM: dts: imx6dl-prtvt7: Add missing tvp5150 video decoder node

2022-02-11 Thread Shawn Guo
On Mon, Jan 31, 2022 at 11:28:38AM +0100, Oleksij Rempel wrote:
> From: Robin van der Gracht 
> 
> Signed-off-by: Robin van der Gracht 

Please write up some commit log.  Also your SoB is missing.

Shawn

> ---
>  arch/arm/boot/dts/imx6dl-prtvt7.dts | 42 +
>  1 file changed, 42 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx6dl-prtvt7.dts 
> b/arch/arm/boot/dts/imx6dl-prtvt7.dts
> index be7c4cb339e7..baaa6ffc4df9 100644
> --- a/arch/arm/boot/dts/imx6dl-prtvt7.dts
> +++ b/arch/arm/boot/dts/imx6dl-prtvt7.dts
> @@ -6,6 +6,7 @@
>  /dts-v1/;
>  #include "imx6dl.dtsi"
>  #include "imx6qdl-prti6q.dtsi"
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -171,6 +172,18 @@ panel_in: endpoint {
>   };
>   };
>  
> + connector {
> + compatible = "composite-video-connector";
> + label = "Composite0";
> + sdtv-standards = ;
> +
> + port {
> + comp0_out: endpoint {
> + remote-endpoint = <_comp0_in>;
> + };
> + };
> + };
> +
>   reg_bl_12v0: regulator-bl-12v0 {
>   compatible = "regulator-fixed";
>   pinctrl-names = "default";
> @@ -295,6 +308,31 @@ sgtl5000: audio-codec@a {
>   VDDIO-supply = <_3v3>;
>   VDDD-supply = <_1v8>;
>   };
> +
> + video@5c {
> + compatible = "ti,tvp5150";
> + reg = <0x5c>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + tvp5150_comp0_in: endpoint {
> + remote-endpoint = <_out>;
> + };
> + };
> +
> + /* Output port 2 is video output pad */
> + port@2 {
> + reg = <2>;
> +
> + tvp5151_to_ipu1_csi0_mux: endpoint {
> + remote-endpoint = 
> <_csi0_mux_from_parallel_sensor>;
> + };
> + };
> + };
>  };
>  
>   {
> @@ -322,6 +360,10 @@ _di0_disp0 {
>   remote-endpoint = <_in>;
>  };
>  
> +_csi0_mux_from_parallel_sensor {
> + remote-endpoint = <_to_ipu1_csi0_mux>;
> +};
> +
>   {
>   pinctrl-names = "default";
>   pinctrl-0 = <_pwm1>;
> -- 
> 2.30.2
> 


Re: [PATCH v1 4/4] ARM: dts: imx6dl: plym2m, prtvt7, victgo: make use of new resistive-adc-touch driver

2022-01-25 Thread Shawn Guo
On Wed, Jan 05, 2022 at 12:04:34PM +0100, Oleksij Rempel wrote:
> Hi Shawn,
> 
> sorry for the delay, I just came back to work.
> 
> On Mon, Dec 06, 2021 at 09:06:28AM +0800, Shawn Guo wrote:
> > On Mon, Nov 22, 2021 at 01:43:10PM +0100, Oleksij Rempel wrote:
> > > The tsc2046 is an ADC used as touchscreen controller. To share as mach
> > > code as possible, we should use it as actual ADC + virtual tochscreen
> > > controller.
> > > With this patch we make use of the new kernel IIO and HID infrastructure.
> > > 
> > > Signed-off-by: Oleksij Rempel 
> > 
> > One space is enough in subject "victgo:  make".
> 
> done.
> 
> > > ---
> > >  arch/arm/boot/dts/imx6dl-plym2m.dts | 55 -
> > >  arch/arm/boot/dts/imx6dl-prtvt7.dts | 53 ---
> > >  arch/arm/boot/dts/imx6dl-victgo.dts | 55 +
> > >  3 files changed, 120 insertions(+), 43 deletions(-)
> > > 
> > > diff --git a/arch/arm/boot/dts/imx6dl-plym2m.dts 
> > > b/arch/arm/boot/dts/imx6dl-plym2m.dts
> > > index 60fe5f14666e..e2afedae85cb 100644
> > > --- a/arch/arm/boot/dts/imx6dl-plym2m.dts
> > > +++ b/arch/arm/boot/dts/imx6dl-plym2m.dts
> > > @@ -101,6 +101,17 @@ reg_12v0: regulator-12v0 {
> > >   regulator-min-microvolt = <1200>;
> > >   regulator-max-microvolt = <1200>;
> > >   };
> > > +
> > > + touchscreen {
> > > + compatible = "resistive-adc-touch";
> > > + io-channels = < 1>, < 3>, < 4>, < 5>;
> > > + io-channel-names = "y", "z1", "z2", "x";
> > > + touchscreen-min-pressure = <64687>;
> > > + touchscreen-inverted-x;
> > > + touchscreen-inverted-y;
> > > + touchscreen-x-plate-ohms = <300>;
> > > + touchscreen-y-plate-ohms = <800>;
> > > + };
> > >  };
> > >  
> > >   {
> > > @@ -129,26 +140,38 @@  {
> > >   pinctrl-0 = <_ecspi2>;
> > >   status = "okay";
> > >  
> > > - touchscreen@0 {
> > > - compatible = "ti,tsc2046";
> > > + adc: adc@0 {
> > 
> > Isn't label name "adc" too generic?
> 
> I do not have strong opinion about this. Currently we have no
> restrictions for the node names:
> Documentation/devicetree/bindings/iio/adc/ti,tsc2046.yaml
> Documentation/devicetree/bindings/iio/adc/adc.yaml
> 
> I can name it touchscreen-adc@0 or something like this. What are your
> preferences?

I wasn't talking about node name but label.

Shawn


Re: [PATCH v1 4/4] ARM: dts: imx6dl: plym2m, prtvt7, victgo: make use of new resistive-adc-touch driver

2021-12-06 Thread Shawn Guo
On Mon, Nov 22, 2021 at 01:43:10PM +0100, Oleksij Rempel wrote:
> The tsc2046 is an ADC used as touchscreen controller. To share as mach
> code as possible, we should use it as actual ADC + virtual tochscreen
> controller.
> With this patch we make use of the new kernel IIO and HID infrastructure.
> 
> Signed-off-by: Oleksij Rempel 

One space is enough in subject "victgo:  make".

> ---
>  arch/arm/boot/dts/imx6dl-plym2m.dts | 55 -
>  arch/arm/boot/dts/imx6dl-prtvt7.dts | 53 ---
>  arch/arm/boot/dts/imx6dl-victgo.dts | 55 +
>  3 files changed, 120 insertions(+), 43 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6dl-plym2m.dts 
> b/arch/arm/boot/dts/imx6dl-plym2m.dts
> index 60fe5f14666e..e2afedae85cb 100644
> --- a/arch/arm/boot/dts/imx6dl-plym2m.dts
> +++ b/arch/arm/boot/dts/imx6dl-plym2m.dts
> @@ -101,6 +101,17 @@ reg_12v0: regulator-12v0 {
>   regulator-min-microvolt = <1200>;
>   regulator-max-microvolt = <1200>;
>   };
> +
> + touchscreen {
> + compatible = "resistive-adc-touch";
> + io-channels = < 1>, < 3>, < 4>, < 5>;
> + io-channel-names = "y", "z1", "z2", "x";
> + touchscreen-min-pressure = <64687>;
> + touchscreen-inverted-x;
> + touchscreen-inverted-y;
> + touchscreen-x-plate-ohms = <300>;
> + touchscreen-y-plate-ohms = <800>;
> + };
>  };
>  
>   {
> @@ -129,26 +140,38 @@  {
>   pinctrl-0 = <_ecspi2>;
>   status = "okay";
>  
> - touchscreen@0 {
> - compatible = "ti,tsc2046";
> + adc: adc@0 {

Isn't label name "adc" too generic?

> + compatible = "ti,tsc2046e-adc";
>   reg = <0>;
>   pinctrl-0 = <_tsc2046>;
>   pinctrl-names ="default";
> - spi-max-frequency = <10>;
> - interrupts-extended = < 20 IRQ_TYPE_EDGE_FALLING>;
> - pendown-gpio = < 20 GPIO_ACTIVE_LOW>;
> + spi-max-frequency = <100>;
> + interrupts-extended = < 20 IRQ_TYPE_LEVEL_LOW>;
> + #io-channel-cells = <1>;
>  
> - touchscreen-inverted-x;
> - touchscreen-inverted-y;
> - touchscreen-max-pressure = <4095>;
> -
> - ti,vref-delay-usecs = /bits/ 16 <100>;
> - ti,x-plate-ohms = /bits/ 16 <800>;
> - ti,y-plate-ohms = /bits/ 16 <300>;
> - ti,debounce-max = /bits/ 16 <3>;
> - ti,debounce-tol = /bits/ 16 <70>;
> - ti,debounce-rep = /bits/ 16 <3>;
> - wakeup-source;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + channel@1 {
> + reg = <1>;
> + settling-time-us = <700>;
> + oversampling-ratio = <5>;
> + };

Have a newline between child nodes.

Shawn

> + channel@3 {
> + reg = <3>;
> + settling-time-us = <700>;
> + oversampling-ratio = <5>;
> + };
> + channel@4 {
> + reg = <4>;
> + settling-time-us = <700>;
> + oversampling-ratio = <5>;
> + };
> + channel@5 {
> + reg = <5>;
> + settling-time-us = <700>;
> + oversampling-ratio = <5>;
> + };
>   };
>  };
>  
> diff --git a/arch/arm/boot/dts/imx6dl-prtvt7.dts 
> b/arch/arm/boot/dts/imx6dl-prtvt7.dts
> index 02b53df03e6f..c361e0683973 100644
> --- a/arch/arm/boot/dts/imx6dl-prtvt7.dts
> +++ b/arch/arm/boot/dts/imx6dl-prtvt7.dts
> @@ -235,6 +235,17 @@ simple-audio-card,codec {
>   frame-master;
>   };
>   };
> +
> + touchscreen {
> + compatible = "resistive-adc-touch";
> + io-channels = < 1>, < 3>, < 4>, < 5>;
> + io-channel-names = "y", "z1", "z2", "x";
> + touchscreen-min-pressure = <64687>;
> + touchscreen-inverted-x;
> + touchscreen-inverted-y;
> + touchscreen-x-plate-ohms = <300>;
> + touchscreen-y-plate-ohms = <800>;
> + };
>  };
>  
>   {
> @@ -277,22 +288,38 @@  {
>   pinctrl-0 = <_ecspi2>;
>   status = "okay";
>  
> - touchscreen@0 {
> - compatible = "ti,tsc2046";
> + adc: adc@0 {
> + compatible = "ti,tsc2046e-adc";
>   reg = <0>;
>   pinctrl-0 = <_tsc>;
>   pinctrl-names ="default";
> - spi-max-frequency = <10>;
> - interrupts-extended = < 20 IRQ_TYPE_EDGE_FALLING>;
> - pendown-gpio = < 20 GPIO_ACTIVE_LOW>;
> - touchscreen-max-pressure = <4095>;
> - ti,vref-delay-usecs = /bits/ 16 <100>;
> - ti,x-plate-ohms = /bits/ 16 <800>;
> - 

Re: [PATCH v1 2/4] ARM: dts: imx6dl-prtvt7: Add missing tvp5150 video decoder node

2021-12-06 Thread Shawn Guo
On Mon, Nov 22, 2021 at 01:43:08PM +0100, Oleksij Rempel wrote:
> From: Robin van der Gracht 
> 
> Signed-off-by: Robin van der Gracht 
> ---
>  arch/arm/boot/dts/imx6dl-prtvt7.dts | 40 +
>  1 file changed, 40 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx6dl-prtvt7.dts 
> b/arch/arm/boot/dts/imx6dl-prtvt7.dts
> index be7c4cb339e7..02b53df03e6f 100644
> --- a/arch/arm/boot/dts/imx6dl-prtvt7.dts
> +++ b/arch/arm/boot/dts/imx6dl-prtvt7.dts
> @@ -6,6 +6,7 @@
>  /dts-v1/;
>  #include "imx6dl.dtsi"
>  #include "imx6qdl-prti6q.dtsi"
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -171,6 +172,18 @@ panel_in: endpoint {
>   };
>   };
>  
> + connector {
> + compatible = "composite-video-connector";
> + label = "Composite0";
> + sdtv-standards = ;
> +
> + port {
> + comp0_out: endpoint {
> + remote-endpoint = <_comp0_in>;
> + };
> + };
> + };
> +
>   reg_bl_12v0: regulator-bl-12v0 {
>   compatible = "regulator-fixed";
>   pinctrl-names = "default";
> @@ -295,6 +308,29 @@ sgtl5000: audio-codec@a {
>   VDDIO-supply = <_3v3>;
>   VDDD-supply = <_1v8>;
>   };
> +
> + video@5c {
> + compatible = "ti,tvp5150";
> + reg = <0x5c>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;

Have a newline between property and child node.

Shawn

> + tvp5150_comp0_in: endpoint {
> + remote-endpoint = <_out>;
> + };
> + };
> +
> + /* Output port 2 is video output pad */
> + port@2 {
> + reg = <2>;
> + tvp5151_to_ipu1_csi0_mux: endpoint {
> + remote-endpoint = 
> <_csi0_mux_from_parallel_sensor>;
> + };
> + };
> + };
>  };
>  
>   {
> @@ -322,6 +358,10 @@ _di0_disp0 {
>   remote-endpoint = <_in>;
>  };
>  
> +_csi0_mux_from_parallel_sensor {
> + remote-endpoint = <_to_ipu1_csi0_mux>;
> +};
> +
>   {
>   pinctrl-names = "default";
>   pinctrl-0 = <_pwm1>;
> -- 
> 2.30.2
> 


Re: [PATCH v2 2/2] drm/panel: Add Sony Tulip Truly NT35521 driver

2021-09-21 Thread Shawn Guo
On Tue, Aug 24, 2021 at 09:59:04PM +0200, Sam Ravnborg wrote:
> On Tue, Aug 24, 2021 at 10:58:31AM +0800, Shawn Guo wrote:
> > On Mon, Aug 09, 2021 at 01:10:08PM +0800, Shawn Guo wrote:
> > > It adds a DRM panel driver for Sony Tulip Truly NT35521 5.24" 1280x720
> > > DSI panel, which can be found on Sony Xperia M4 Aqua phone.  The panel
> > > backlight is managed through DSI link.
> > > 
> > > The driver is built using linux-mdss-dsi-panel-driver-generator[1], and
> > > additionally modeling the 5V control GPIOs with regulators and adding
> > > Backlight GPIO support.
> > > 
> > > [1] 
> > > https://github.com/msm8916-mainline/linux-mdss-dsi-panel-driver-generator
> > > 
> > > Signed-off-by: Shawn Guo 
> > 
> > Sam, Stephan,
> > 
> > Thank you for the review comments on v1!  How does v2 look to you?
> 
> I will not have time until next week - sorry.
> Please ping me if you have no feedback i one week from now.

Sam,

Could you help handle this patch now?  Thanks!

Shawn


Re: [PATCH v2 2/2] drm/panel: Add Sony Tulip Truly NT35521 driver

2021-08-23 Thread Shawn Guo
On Mon, Aug 09, 2021 at 01:10:08PM +0800, Shawn Guo wrote:
> It adds a DRM panel driver for Sony Tulip Truly NT35521 5.24" 1280x720
> DSI panel, which can be found on Sony Xperia M4 Aqua phone.  The panel
> backlight is managed through DSI link.
> 
> The driver is built using linux-mdss-dsi-panel-driver-generator[1], and
> additionally modeling the 5V control GPIOs with regulators and adding
> Backlight GPIO support.
> 
> [1] https://github.com/msm8916-mainline/linux-mdss-dsi-panel-driver-generator
> 
> Signed-off-by: Shawn Guo 

Sam, Stephan,

Thank you for the review comments on v1!  How does v2 look to you?

Shawn


Re: [PATCH v34 0/3] Mainline imx6 based SKOV boards

2021-08-13 Thread Shawn Guo
On Wed, Aug 04, 2021 at 06:34:36AM +0200, Oleksij Rempel wrote:
> changes v4:
> - add vref-supply to adc@0
> - split gpio assignment for the mdio node
> 
> changes v3:
> - drop panel bindings patches, it is already in drm-misc-next
> - remove some new lines
> - reorder compatibles at the start of the nodes
> - use lowercase for hex value
> - add enable-active-high to the regulator-vcc-mmc-io and fix MMC voltage
>   configuration.
> 
> changes v2:
> - remove unnecessary newlines.
> - change linux,wakeup to wakeup-source
> - change switch@3 unit-address to @0
> - sort aliases alphabetically
> 
> Mainline imx6 based DTs for SKOV A/S boards
> 
> Oleksij Rempel (2):
>   dt-bindings: vendor-prefixes: Add an entry for SKOV A/S
>   dt-bindings: arm: fsl: add SKOV imx6q and imx6dl based boards
> 
> Sam Ravnborg (1):
>   ARM: dts: add SKOV imx6q and imx6dl based boards

Applied, thanks!


Re: [PATCH 1/2] dt-bindings: display: panel: Add Truly NT35521 panel support

2021-08-13 Thread Shawn Guo
On Wed, Aug 11, 2021 at 12:51:56PM -0600, Rob Herring wrote:
> On Wed, Aug 04, 2021 at 04:13:51PM +0800, Shawn Guo wrote:
> > The Truly NT35521 is a 5.24" 1280x720 DSI panel, and the backlight is
> > managed through DSI link.
> > 
> > Signed-off-by: Shawn Guo 
> > ---
> >  .../bindings/display/panel/truly,nt35521.yaml | 62 +++
> >  1 file changed, 62 insertions(+)
> >  create mode 100644 
> > Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml
> > 
> > diff --git 
> > a/Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml 
> > b/Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml
> > new file mode 100644
> > index ..4727c3df6eb8
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml
> > @@ -0,0 +1,62 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/display/panel/truly,nt35521.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Truly NT35521 5.24" 1280x720 MIPI-DSI Panel
> > +
> > +maintainers:
> > +  - Shawn Guo 
> > +
> > +description: |
> > +  The Truly NT35521 is a 5.24" 1280x720 MIPI-DSI panel.  The panel 
> > backlight
> > +  is managed through DSI link.
> > +
> > +allOf:
> > +  - $ref: panel-common.yaml#
> > +
> > +properties:
> > +  compatible:
> > +const: truly,nt35521
> > +
> > +  reg: true
> > +
> > +  reset-gpios: true
> > +
> > +  enable-gpios: true
> > +
> > +  pwr-positive5-gpios:
> > +maxItems: 1
> > +
> > +  pwr-negative5-gpios:
> > +maxItems: 1
> 
> Are these +/-5V supplies? If so, they should be modeled with 
> gpio-regulator perhaps unless the panel connection could only ever be 
> GPIOs.

Hi Rob,

The binding has been updated in v2 [1].  Please help review that.
Thanks!

Shawn

[1] 
https://lore.kernel.org/linux-arm-msm/20210809051008.6172-2-shawn@linaro.org/T/#m587035a602b1be6c5326dcf24af01b3e8a5d2cc9

> 
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - reset-gpios
> > +  - enable-gpios
> > +  - pwr-positive5-gpios
> > +  - pwr-negative5-gpios
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +#include 
> > +
> > +dsi {
> > +#address-cells = <1>;
> > +#size-cells = <0>;
> > +
> > +panel@0 {
> > +compatible = "truly,nt35521";
> > +reg = <0>;
> > +reset-gpios = < 25 GPIO_ACTIVE_LOW>;
> > +pwr-positive5-gpios = < 114 GPIO_ACTIVE_HIGH>;
> > +pwr-negative5-gpios = < 17 GPIO_ACTIVE_HIGH>;
> > +enable-gpios = < 10 GPIO_ACTIVE_HIGH>;
> > +};
> > +};
> > +...
> > -- 
> > 2.17.1
> > 
> > 


[PATCH v2 2/2] drm/panel: Add Sony Tulip Truly NT35521 driver

2021-08-08 Thread Shawn Guo
It adds a DRM panel driver for Sony Tulip Truly NT35521 5.24" 1280x720
DSI panel, which can be found on Sony Xperia M4 Aqua phone.  The panel
backlight is managed through DSI link.

The driver is built using linux-mdss-dsi-panel-driver-generator[1], and
additionally modeling the 5V control GPIOs with regulators and adding
Backlight GPIO support.

[1] https://github.com/msm8916-mainline/linux-mdss-dsi-panel-driver-generator

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/panel/Kconfig |  10 +
 drivers/gpu/drm/panel/Makefile|   1 +
 .../panel/panel-sony-tulip-truly-nt35521.c| 552 ++
 3 files changed, 563 insertions(+)
 create mode 100644 drivers/gpu/drm/panel/panel-sony-tulip-truly-nt35521.c

diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index ef87d92cdf49..a5809eab49b2 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -502,6 +502,16 @@ config DRM_PANEL_SONY_ACX565AKM
  Say Y here if you want to enable support for the Sony ACX565AKM
  800x600 3.5" panel (found on the Nokia N900).
 
+config DRM_PANEL_SONY_TULIP_TRULY_NT35521
+   tristate "Sony Tulip Truly NT35521 panel"
+   depends on GPIOLIB && OF
+   depends on DRM_MIPI_DSI
+   depends on BACKLIGHT_CLASS_DEVICE
+   help
+ Say Y here if you want to enable support for the Sony Tulip
+ NT35521 1280x720 video mode panel as found on Sony Xperia M4
+ Aqua phone.
+
 config DRM_PANEL_TDO_TL070WSH30
tristate "TDO TL070WSH30 DSI panel"
depends on OF
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index cae4d976c069..852ce32d58ee 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -52,6 +52,7 @@ obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7703) += 
panel-sitronix-st7703.o
 obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7789V) += panel-sitronix-st7789v.o
 obj-$(CONFIG_DRM_PANEL_SONY_ACX424AKP) += panel-sony-acx424akp.o
 obj-$(CONFIG_DRM_PANEL_SONY_ACX565AKM) += panel-sony-acx565akm.o
+obj-$(CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521) += 
panel-sony-tulip-truly-nt35521.o
 obj-$(CONFIG_DRM_PANEL_TDO_TL070WSH30) += panel-tdo-tl070wsh30.o
 obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o
 obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
diff --git a/drivers/gpu/drm/panel/panel-sony-tulip-truly-nt35521.c 
b/drivers/gpu/drm/panel/panel-sony-tulip-truly-nt35521.c
new file mode 100644
index ..eba926c6f722
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-sony-tulip-truly-nt35521.c
@@ -0,0 +1,552 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2021, Linaro Limited
+ *
+ * Generated with linux-mdss-dsi-panel-driver-generator from vendor device 
tree:
+ *   Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+struct truly_nt35521 {
+   struct drm_panel panel;
+   struct mipi_dsi_device *dsi;
+   struct regulator_bulk_data supplies[2];
+   struct gpio_desc *reset_gpio;
+   struct gpio_desc *blen_gpio;
+   bool prepared;
+   bool enabled;
+};
+
+static inline
+struct truly_nt35521 *to_truly_nt35521(struct drm_panel *panel)
+{
+   return container_of(panel, struct truly_nt35521, panel);
+}
+
+#define dsi_generic_write_seq(dsi, seq...) do {
\
+   static const u8 d[] = { seq };  \
+   int ret;\
+   ret = mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d));\
+   if (ret < 0)\
+   return ret; \
+   } while (0)
+
+static void truly_nt35521_reset(struct truly_nt35521 *ctx)
+{
+   gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+   usleep_range(1000, 2000);
+   gpiod_set_value_cansleep(ctx->reset_gpio, 1);
+   usleep_range(1, 11000);
+   gpiod_set_value_cansleep(ctx->reset_gpio, 0);
+   msleep(150);
+}
+
+static int truly_nt35521_on(struct truly_nt35521 *ctx)
+{
+   struct mipi_dsi_device *dsi = ctx->dsi;
+   struct device *dev = >dev;
+   int ret;
+
+   dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
+   dsi_generic_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x00);
+   dsi_generic_write_seq(dsi, 0xff, 0xaa, 0x55, 0xa5, 0x80);
+   dsi_generic_write_seq(dsi, 0x6f, 0x11, 0x00);
+   dsi_generic_write_seq(dsi, 0xf7, 0x20, 0x00);
+   dsi_generic_write_seq(dsi, 0x6f, 0x01);
+   dsi_generic_write_seq(dsi, 0xb1, 0x21);
+   dsi_generic_write_seq(dsi, 0xbd, 0x01, 0xa0, 0x10, 0x08, 0x01);
+   dsi_generic_write_seq(dsi, 0xb8, 0x01, 0x02, 0x0c, 0x02);
+   dsi_generic_write_seq(dsi, 0xbb,

[PATCH v2 1/2] dt-bindings: display: Add Sony Tulip Truly NT35521 panel support

2021-08-08 Thread Shawn Guo
The Sony Tulip Truly NT35521 is a 5.24" 1280x720 DSI panel, which can
be found on Sony Xperia M4 Aqua phone.  The backlight is managed
through DSI link.

Signed-off-by: Shawn Guo 
---
 .../panel/sony,tulip-truly-nt35521.yaml   | 72 +++
 1 file changed, 72 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/display/panel/sony,tulip-truly-nt35521.yaml

diff --git 
a/Documentation/devicetree/bindings/display/panel/sony,tulip-truly-nt35521.yaml 
b/Documentation/devicetree/bindings/display/panel/sony,tulip-truly-nt35521.yaml
new file mode 100644
index ..967972939598
--- /dev/null
+++ 
b/Documentation/devicetree/bindings/display/panel/sony,tulip-truly-nt35521.yaml
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/sony,tulip-truly-nt35521.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sony Tulip Truly NT35521 5.24" 1280x720 MIPI-DSI Panel
+
+maintainers:
+  - Shawn Guo 
+
+description: |
+  The Sony Tulip Truly NT35521 is a 5.24" 1280x720 MIPI-DSI panel, which
+  can be found no Sony Xperia M4 phone.  The panel backlight is managed
+  through DSI link.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+const: sony,tulip-truly-nt35521
+
+  reg: true
+
+  positive5-supply:
+description: Positive 5V supply
+
+  negative5-supply:
+description: Negative 5V supply
+
+  reset-gpios: true
+
+  enable-gpios: true
+
+  port: true
+
+required:
+  - compatible
+  - reg
+  - positive5-supply
+  - negative5-supply
+  - reset-gpios
+  - enable-gpios
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+#include 
+
+dsi {
+#address-cells = <1>;
+#size-cells = <0>;
+
+panel@0 {
+compatible = "sony,tulip-truly-nt35521";
+reg = <0>;
+positive5-supply = <_reg>;
+negative5-supply = <_reg>;
+reset-gpios = < 25 GPIO_ACTIVE_LOW>;
+enable-gpios = < 10 GPIO_ACTIVE_HIGH>;
+
+port {
+panel_in: endpoint {
+remote-endpoint = <_out>;
+};
+};
+};
+};
+...
-- 
2.17.1



[PATCH v2 0/2] Add Sony Tulip Truly NT35521 panel support

2021-08-08 Thread Shawn Guo
It adds driver for Sony Tulip Truly NT35521 5.24" 1280x720 DSI panel,
which can be found on Sony Xperia M4 Aqua phone.

Changes for v2:
- Add `port` node into bindings.
- Re-create the driver using linux-mdss-dsi-panel-driver-generator[1].
- Rename the driver to include Sony Tulip.
- Model 5V control GPIOs with regulators.
- Rename Backlight GPIO as "backlight-gpios".

[1] https://github.com/msm8916-mainline/linux-mdss-dsi-panel-driver-generator

Shawn Guo (2):
  dt-bindings: display: Add Sony Tulip Truly NT35521 panel support
  drm/panel: Add Sony Tulip Truly NT35521 driver

 .../panel/sony,tulip-truly-nt35521.yaml   |  72 +++
 drivers/gpu/drm/panel/Kconfig |  10 +
 drivers/gpu/drm/panel/Makefile|   1 +
 .../panel/panel-sony-tulip-truly-nt35521.c| 552 ++
 4 files changed, 635 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/display/panel/sony,tulip-truly-nt35521.yaml
 create mode 100644 drivers/gpu/drm/panel/panel-sony-tulip-truly-nt35521.c

-- 
2.17.1



Re: [PATCH 2/2] drm/panel: Add Truly NT35521 panel driver

2021-08-08 Thread Shawn Guo
On Sun, Aug 08, 2021 at 05:29:30PM +0200, Stephan Gerhold wrote:
> > 2) The driver works good, if the kernel is launched via "fastboot boot".
> >But if the kernel is flashed to eMMC and launched by bootloader with
> >splash screen, kernel will fail to bring up the panel.  After kernel
> >boots up, a blank & unblank cycle can get panel work though.
> > 
> > The problem 2) is not driver generator related.  @Konrad, did you see
> > it on asus-z00t-tm5p5-n35596 driver?
> > 
> 
> Do you have CONFIG_DRM_MSM=y (built-in) instead of =m (module) maybe?
> I think a similar issue exists on MSM8916 but it does not happen
> for some reason if CONFIG_DRM_MSM=m instead of =y. Somehow having it
> load later during the boot process fixes some things there.

Indeed!  I have CONFIG_DRM_MSM=y in my build, and changing it to module
removes the problem.  Thanks much for the hint, Stephan!

Shawn


Re: [PATCH 2/2] drm/panel: Add Truly NT35521 panel driver

2021-08-08 Thread Shawn Guo
Hi Sam,

On Wed, Aug 04, 2021 at 06:24:12PM +0200, Sam Ravnborg wrote:
> Hi Shawn,
> 
> see a few comments in the following.

Thanks for the review comments!  All of them will be addressed in v2.

Shawn

> On Wed, Aug 04, 2021 at 04:13:52PM +0800, Shawn Guo wrote:
> > It adds a drm driver for Truly NT35521 5.24" 1280x720 DSI panel, which
> > can be found on Sony Xperia M4 Aqua phone.  The panel backlight is
> > managed through DSI link.
> > 
> > Signed-off-by: Shawn Guo 
> > ---
> >  drivers/gpu/drm/panel/Kconfig   |   9 +
> >  drivers/gpu/drm/panel/Makefile  |   1 +
> >  drivers/gpu/drm/panel/panel-truly-nt35521.c | 491 
> >  3 files changed, 501 insertions(+)
> >  create mode 100644 drivers/gpu/drm/panel/panel-truly-nt35521.c


Re: [PATCH 2/2] drm/panel: Add Truly NT35521 panel driver

2021-08-08 Thread Shawn Guo
Hi Stephan,

Thanks for looking at the patch!

On Wed, Aug 04, 2021 at 02:09:19PM +0200, Stephan Gerhold wrote:
> Hi Shawn,
> 
> Thanks for the patch!
> 
> On Wed, Aug 04, 2021 at 04:13:52PM +0800, Shawn Guo wrote:
> > It adds a drm driver for Truly NT35521 5.24" 1280x720 DSI panel, which
> > can be found on Sony Xperia M4 Aqua phone.  The panel backlight is
> > managed through DSI link.
> > 
> > Signed-off-by: Shawn Guo 
> > ---
> >  drivers/gpu/drm/panel/Kconfig   |   9 +
> >  drivers/gpu/drm/panel/Makefile  |   1 +
> >  drivers/gpu/drm/panel/panel-truly-nt35521.c | 491 
> >  3 files changed, 501 insertions(+)
> >  create mode 100644 drivers/gpu/drm/panel/panel-truly-nt35521.c
> > 
> > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
> > index ef87d92cdf49..cdc4abd5c40c 100644
> > --- a/drivers/gpu/drm/panel/Kconfig
> > +++ b/drivers/gpu/drm/panel/Kconfig
> > @@ -537,6 +537,15 @@ config DRM_PANEL_TPO_TPG110
> >   400CH LTPS TFT LCD Single Chip Digital Driver for up to
> >   800x400 LCD panels.
> >  
> > +config DRM_PANEL_TRULY_NT35521
> > +   tristate "Truly NT35521 panel"
> 
> I think the name "Truly NT35521" is a bit too generic. AFAIK "Truly" is
> a panel vendor and the NovaTek NT35521 is the panel controller. But
> there are almost certainly other Truly panels that were also combined
> with a NT35521 but need a slightly different configuration.
> 
> If you don't know more than "Truly NT35521" based on the Sony sources,
> maybe do it similar to "asus,z00t-tm5p5-n35596" and use a compatible
> like "sony,-truly-nt35521". Would be good to clarify the Kconfig
> option here too.

Sounds good!

> 
> > +   depends on OF
> > +   depends on DRM_MIPI_DSI
> > +   depends on BACKLIGHT_CLASS_DEVICE
> > +   help
> > + Say Y here if you want to enable support for Truly NT35521
> > + 1280x720 DSI panel.
> > +
> >  config DRM_PANEL_TRULY_NT35597_WQXGA
> > tristate "Truly WQXGA"
> > depends on OF
> > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
> > index cae4d976c069..3d3c98cb7a7b 100644
> > --- a/drivers/gpu/drm/panel/Makefile
> > +++ b/drivers/gpu/drm/panel/Makefile
> > @@ -56,6 +56,7 @@ obj-$(CONFIG_DRM_PANEL_TDO_TL070WSH30) += 
> > panel-tdo-tl070wsh30.o
> >  obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o
> >  obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
> >  obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o
> > +obj-$(CONFIG_DRM_PANEL_TRULY_NT35521) += panel-truly-nt35521.o
> >  obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o
> >  obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o
> >  obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
> > diff --git a/drivers/gpu/drm/panel/panel-truly-nt35521.c 
> > b/drivers/gpu/drm/panel/panel-truly-nt35521.c
> > new file mode 100644
> > index ..ea3cfb46be7e
> > --- /dev/null
> > +++ b/drivers/gpu/drm/panel/panel-truly-nt35521.c
> > @@ -0,0 +1,491 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2021, Linaro Limited
> > + */
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include 
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +struct nt35521_panel {
> > +   struct drm_panel panel;
> > +   struct device *dev;
> > +   struct gpio_desc *rst_gpio;
> > +   struct gpio_desc *pwrp5_gpio;
> > +   struct gpio_desc *pwrn5_gpio;
> > +   struct gpio_desc *en_gpio;
> > +   bool prepared;
> > +   bool enabled;
> > +};
> > +
> > +static inline struct nt35521_panel *panel_to_nt35521(struct drm_panel 
> > *panel)
> > +{
> > +   return container_of(panel, struct nt35521_panel, panel);
> > +}
> > +
> > +#define nt_dcs_write(seq...)   
> > \
> > +({ \
> > +   const u8 d[] = { seq }; \
> > +   if (mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d)) < 0)   \
> > +   DRM_DEV_ERROR(dev, "dcs write buffer failed\n");\
> > +})
> > +
> > +#define nt_gen_write(seq...) 

Re: [PATCH 1/2] dt-bindings: display: panel: Add Truly NT35521 panel support

2021-08-08 Thread Shawn Guo
On Wed, Aug 04, 2021 at 06:03:54PM +0200, Sam Ravnborg wrote:
> Hi Shawn,
> 
> On Wed, Aug 04, 2021 at 04:13:51PM +0800, Shawn Guo wrote:
> > The Truly NT35521 is a 5.24" 1280x720 DSI panel, and the backlight is
> > managed through DSI link.
> > 
> > Signed-off-by: Shawn Guo 
> 
> Please consider adding an optional port node, so we can use this panels
> in a setup using a graph.

Sure, will do in v2.

> A simple port: true would do the trick.
> I am aware that it may not be used today, this is a preparation for
> potential future use.
> 
> With this fixed,
> Reviewed-by: Sam Ravnborg 

Thanks, Sam!

Shawn


[PATCH 2/2] drm/panel: Add Truly NT35521 panel driver

2021-08-04 Thread Shawn Guo
It adds a drm driver for Truly NT35521 5.24" 1280x720 DSI panel, which
can be found on Sony Xperia M4 Aqua phone.  The panel backlight is
managed through DSI link.

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/panel/Kconfig   |   9 +
 drivers/gpu/drm/panel/Makefile  |   1 +
 drivers/gpu/drm/panel/panel-truly-nt35521.c | 491 
 3 files changed, 501 insertions(+)
 create mode 100644 drivers/gpu/drm/panel/panel-truly-nt35521.c

diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index ef87d92cdf49..cdc4abd5c40c 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -537,6 +537,15 @@ config DRM_PANEL_TPO_TPG110
  400CH LTPS TFT LCD Single Chip Digital Driver for up to
  800x400 LCD panels.
 
+config DRM_PANEL_TRULY_NT35521
+   tristate "Truly NT35521 panel"
+   depends on OF
+   depends on DRM_MIPI_DSI
+   depends on BACKLIGHT_CLASS_DEVICE
+   help
+ Say Y here if you want to enable support for Truly NT35521
+ 1280x720 DSI panel.
+
 config DRM_PANEL_TRULY_NT35597_WQXGA
tristate "Truly WQXGA"
depends on OF
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index cae4d976c069..3d3c98cb7a7b 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -56,6 +56,7 @@ obj-$(CONFIG_DRM_PANEL_TDO_TL070WSH30) += 
panel-tdo-tl070wsh30.o
 obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o
 obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
 obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o
+obj-$(CONFIG_DRM_PANEL_TRULY_NT35521) += panel-truly-nt35521.o
 obj-$(CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA) += panel-truly-nt35597.o
 obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o
 obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
diff --git a/drivers/gpu/drm/panel/panel-truly-nt35521.c 
b/drivers/gpu/drm/panel/panel-truly-nt35521.c
new file mode 100644
index ..ea3cfb46be7e
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-truly-nt35521.c
@@ -0,0 +1,491 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2021, Linaro Limited
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#include 
+
+#include 
+#include 
+#include 
+#include 
+
+struct nt35521_panel {
+   struct drm_panel panel;
+   struct device *dev;
+   struct gpio_desc *rst_gpio;
+   struct gpio_desc *pwrp5_gpio;
+   struct gpio_desc *pwrn5_gpio;
+   struct gpio_desc *en_gpio;
+   bool prepared;
+   bool enabled;
+};
+
+static inline struct nt35521_panel *panel_to_nt35521(struct drm_panel *panel)
+{
+   return container_of(panel, struct nt35521_panel, panel);
+}
+
+#define nt_dcs_write(seq...)   \
+({ \
+   const u8 d[] = { seq }; \
+   if (mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d)) < 0)   \
+   DRM_DEV_ERROR(dev, "dcs write buffer failed\n");\
+})
+
+#define nt_gen_write(seq...)   \
+({ \
+   const u8 d[] = { seq }; \
+   if (mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d)) < 0)  \
+   DRM_DEV_ERROR(dev, "generic write buffer failed\n");\
+})
+
+static void nt35521_panel_on(struct nt35521_panel *nt)
+{
+   struct mipi_dsi_device *dsi = to_mipi_dsi_device(nt->dev);
+   struct device *dev = nt->dev;
+
+   /* Transmit data in low power mode */
+   dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
+   nt_dcs_write(0xf0, 0x55, 0xaa, 0x52, 0x08, 0x00);
+   nt_dcs_write(0xff, 0xaa, 0x55, 0xa5, 0x80);
+   nt_dcs_write(0x6f, 0x11, 0x00);
+   nt_dcs_write(0xf7, 0x20, 0x00);
+   nt_dcs_write(0x6f, 0x01);
+   nt_dcs_write(0xb1, 0x21);
+   nt_dcs_write(0xbd, 0x01, 0xa0, 0x10, 0x08, 0x01);
+   nt_dcs_write(0xb8, 0x01, 0x02, 0x0c, 0x02);
+   nt_dcs_write(0xbb, 0x11, 0x11);
+   nt_dcs_write(0xbc, 0x00, 0x00);
+   nt_dcs_write(0xb6, 0x02);
+   nt_dcs_write(0xf0, 0x55, 0xaa, 0x52, 0x08, 0x01);
+   nt_dcs_write(0xb0, 0x09, 0x09);
+   nt_dcs_write(0xb1, 0x09, 0x09);
+   nt_dcs_write(0xbc, 0x8c, 0x00);
+   nt_dcs_write(0xbd, 0x8c, 0x00);
+   nt_dcs_write(0xca, 0x00);
+   nt_dcs_write(0xc0, 0x04);
+   nt_dcs_write(0xbe, 0xb5);
+   nt_dcs_write(0xb3, 0x35, 0x35);
+   nt_dcs_write(0xb4, 0x25, 0x25);
+   nt_dcs_write(0xb9, 0x43, 0x43);
+   nt_dcs_write(0xba, 0x24, 0x24);
+   nt_dcs_write(0xf0, 0x55, 0xaa, 0x52, 0x08, 0x02);
+   nt_dcs_write(0xee, 0x03);
+   nt_dcs_write(0xb0, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb6, 0x00,
+  

[PATCH 1/2] dt-bindings: display: panel: Add Truly NT35521 panel support

2021-08-04 Thread Shawn Guo
The Truly NT35521 is a 5.24" 1280x720 DSI panel, and the backlight is
managed through DSI link.

Signed-off-by: Shawn Guo 
---
 .../bindings/display/panel/truly,nt35521.yaml | 62 +++
 1 file changed, 62 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml 
b/Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml
new file mode 100644
index ..4727c3df6eb8
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/truly,nt35521.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Truly NT35521 5.24" 1280x720 MIPI-DSI Panel
+
+maintainers:
+  - Shawn Guo 
+
+description: |
+  The Truly NT35521 is a 5.24" 1280x720 MIPI-DSI panel.  The panel backlight
+  is managed through DSI link.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+const: truly,nt35521
+
+  reg: true
+
+  reset-gpios: true
+
+  enable-gpios: true
+
+  pwr-positive5-gpios:
+maxItems: 1
+
+  pwr-negative5-gpios:
+maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - enable-gpios
+  - pwr-positive5-gpios
+  - pwr-negative5-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+#include 
+
+dsi {
+#address-cells = <1>;
+#size-cells = <0>;
+
+panel@0 {
+compatible = "truly,nt35521";
+reg = <0>;
+reset-gpios = < 25 GPIO_ACTIVE_LOW>;
+pwr-positive5-gpios = < 114 GPIO_ACTIVE_HIGH>;
+pwr-negative5-gpios = < 17 GPIO_ACTIVE_HIGH>;
+enable-gpios = < 10 GPIO_ACTIVE_HIGH>;
+};
+};
+...
-- 
2.17.1



[PATCH 0/2] Add Truly NT35521 panel driver support

2021-08-04 Thread Shawn Guo
It adds a drm driver for Truly NT35521 5.24" 1280x720 DSI panel, which
can be found on Sony Xperia M4 Aqua phone.

Shawn Guo (2):
  dt-bindings: display: panel: Add Truly NT35521 panel support
  drm/panel: Add Truly NT35521 panel driver

 .../bindings/display/panel/truly,nt35521.yaml |  62 +++
 drivers/gpu/drm/panel/Kconfig |   9 +
 drivers/gpu/drm/panel/Makefile|   1 +
 drivers/gpu/drm/panel/panel-truly-nt35521.c   | 491 ++
 4 files changed, 563 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/display/panel/truly,nt35521.yaml
 create mode 100644 drivers/gpu/drm/panel/panel-truly-nt35521.c

-- 
2.17.1



Re: [PATCH v2 4/4] ARM: dts: add SKOV imx6q and imx6dl based boards

2021-07-25 Thread Shawn Guo
On Wed, Jul 14, 2021 at 06:53:49AM +0200, Oleksij Rempel wrote:
> From: Sam Ravnborg 
> 
> Add SKOV imx6q/dl LT2, LT6 and mi1010ait-1cp1 boards.
> 
> Signed-off-by: Sam Ravnborg 
> Signed-off-by: Søren Andersen 
> Signed-off-by: Juergen Borleis 
> Signed-off-by: Ulrich Ölmann 
> Signed-off-by: Michael Grzeschik 
> Signed-off-by: Marco Felsch 
> Signed-off-by: Lucas Stach 
> Signed-off-by: Oleksij Rempel 
> ---
>  arch/arm/boot/dts/Makefile|   5 +
>  arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts|  13 +
>  arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts| 108 
>  arch/arm/boot/dts/imx6q-skov-revc-lt2.dts |  36 ++
>  arch/arm/boot/dts/imx6q-skov-revc-lt6.dts | 128 +
>  .../dts/imx6q-skov-reve-mi1010ait-1cp1.dts| 127 +
>  arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi  |  54 ++
>  arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi   | 475 ++
>  8 files changed, 946 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-skov-revc-lt2.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-skov-revc-lt6.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-skov-reve-mi1010ait-1cp1.dts
>  create mode 100644 arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index a2389b17026a..66aef5c6526d 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -473,6 +473,8 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6dl-sabrelite.dtb \
>   imx6dl-sabresd.dtb \
>   imx6dl-savageboard.dtb \
> + imx6dl-skov-revc-lt2.dtb \
> + imx6dl-skov-revc-lt6.dtb \
>   imx6dl-ts4900.dtb \
>   imx6dl-ts7970.dtb \
>   imx6dl-tx6dl-comtft.dtb \
> @@ -573,6 +575,9 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6q-sabresd.dtb \
>   imx6q-savageboard.dtb \
>   imx6q-sbc6x.dtb \
> + imx6q-skov-revc-lt2.dtb \
> + imx6q-skov-revc-lt6.dtb \
> + imx6q-skov-reve-mi1010ait-1cp1.dtb \
>   imx6q-tbs2910.dtb \
>   imx6q-ts4900.dtb \
>   imx6q-ts7970.dtb \
> diff --git a/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts 
> b/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
> new file mode 100644
> index ..667b8faa1807
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +//
> +// Copyright (C) 2020 Pengutronix, Ulrich Oelmann 
> +
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-skov-cpu.dtsi"
> +#include "imx6qdl-skov-cpu-revc.dtsi"
> +
> +/ {
> + model = "SKOV IMX6 CPU SoloCore";
> + compatible = "skov,imx6dl-skov-revc-lt2", "fsl,imx6dl";
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts 
> b/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
> new file mode 100644
> index ..25071c7c4e29
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
> @@ -0,0 +1,108 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +//
> +// Copyright (C) 2020 Pengutronix, Ulrich Oelmann 
> +
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-skov-cpu.dtsi"
> +#include "imx6qdl-skov-cpu-revc.dtsi"
> +
> +/ {
> + model = "SKOV IMX6 CPU SoloCore";
> + compatible = "skov,imx6dl-skov-revc-lt6", "fsl,imx6dl";
> +
> + backlight: backlight {
> + compatible = "pwm-backlight";
> + pinctrl-names = "default";
> + pinctrl-0 = <_backlight>;
> + enable-gpios = < 23 GPIO_ACTIVE_LOW>;
> + pwms = < 0 2 0>;
> + brightness-levels = <0 255>;
> + num-interpolated-steps = <17>;
> + default-brightness-level = <8>;
> + power-supply = <_24v0>;
> + };
> +
> + display {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + compatible = "fsl,imx-parallel-display";

Drop the newline and start with compatible.

> + pinctrl-names = "default";
> + pinctrl-0 = <_ipu1>;
> +
> + port@0 {
> + reg = <0>;
> +
> + display0_in: endpoint {
> + remote-endpoint = <_di0_disp0>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + display0_out: endpoint {
> + remote-endpoint = <_in>;
> + };
> + };
> + };
> +
> +

One newline is good enough.

> + panel {
> + compatible = "logictechno,lttd800480070-l6wh-rt";
> + backlight = <>;
> + power-supply = <_3v3>;
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <_out>;
> + };
> + };
> + };
> +};
> +
> 

Re: [PATCH v2 4/4] ARM: dts: add SKOV imx6q and imx6dl based boards

2021-07-22 Thread Shawn Guo
On Sun, Jul 18, 2021 at 10:22:14PM +0200, Sam Ravnborg wrote:
> Hi Oleksij,
> On Wed, Jul 14, 2021 at 06:53:49AM +0200, Oleksij Rempel wrote:
> > From: Sam Ravnborg 
> 
> The real author one these dts files are Juergen Borleis IIRC.
> I made some internal refactoring / renaming which is why I thing git
> says otherwise.
> So onless Juergen says otherwise we should give him the author credit.
> 
> Arnd - would it be OK if I take the bindings patches through
> drm-misc-next, and then you can take the DTS files via arm-soc?

Yeah, it makes sense to send panel-simple.yaml change (patch #1) via drm
tree.

Shawn


Re: [PATCH v1 4/4] ARM: dts: add SKOV imx6q and imx6dl based boards

2021-07-13 Thread Shawn Guo
On Wed, Jun 09, 2021 at 02:10:50PM +0200, Oleksij Rempel wrote:
> From: Sam Ravnborg 
> 
> Add SKOV imx6q/dl LT2, LT6 and mi1010ait-1cp1 boards.
> 
> Signed-off-by: Sam Ravnborg 
> Signed-off-by: Søren Andersen 
> Signed-off-by: Juergen Borleis 
> Signed-off-by: Ulrich Ölmann 
> Signed-off-by: Michael Grzeschik 
> Signed-off-by: Marco Felsch 
> Signed-off-by: Lucas Stach 
> Signed-off-by: Oleksij Rempel 
> ---
>  arch/arm/boot/dts/Makefile|   5 +
>  arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts|  13 +
>  arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts| 108 
>  arch/arm/boot/dts/imx6q-skov-revc-lt2.dts |  36 ++
>  arch/arm/boot/dts/imx6q-skov-revc-lt6.dts | 128 +
>  .../dts/imx6q-skov-reve-mi1010ait-1cp1.dts| 127 +
>  arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi  |  58 +++
>  arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi   | 476 ++
>  8 files changed, 951 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-skov-revc-lt2.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-skov-revc-lt6.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-skov-reve-mi1010ait-1cp1.dts
>  create mode 100644 arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index f8f09c5066e7..60a3ef665697 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -473,6 +473,8 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6dl-sabrelite.dtb \
>   imx6dl-sabresd.dtb \
>   imx6dl-savageboard.dtb \
> + imx6dl-skov-revc-lt2.dtb \
> + imx6dl-skov-revc-lt6.dtb \
>   imx6dl-ts4900.dtb \
>   imx6dl-ts7970.dtb \
>   imx6dl-tx6dl-comtft.dtb \
> @@ -567,6 +569,9 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6q-sabresd.dtb \
>   imx6q-savageboard.dtb \
>   imx6q-sbc6x.dtb \
> + imx6q-skov-revc-lt2.dtb \
> + imx6q-skov-revc-lt6.dtb \
> + imx6q-skov-reve-mi1010ait-1cp1.dtb \
>   imx6q-tbs2910.dtb \
>   imx6q-ts4900.dtb \
>   imx6q-ts7970.dtb \
> diff --git a/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts 
> b/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
> new file mode 100644
> index ..667b8faa1807
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +//
> +// Copyright (C) 2020 Pengutronix, Ulrich Oelmann 
> +
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-skov-cpu.dtsi"
> +#include "imx6qdl-skov-cpu-revc.dtsi"
> +
> +/ {
> + model = "SKOV IMX6 CPU SoloCore";
> + compatible = "skov,imx6dl-skov-revc-lt2", "fsl,imx6dl";
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts 
> b/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
> new file mode 100644
> index ..25071c7c4e29
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
> @@ -0,0 +1,108 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +//
> +// Copyright (C) 2020 Pengutronix, Ulrich Oelmann 
> +
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-skov-cpu.dtsi"
> +#include "imx6qdl-skov-cpu-revc.dtsi"
> +
> +/ {
> + model = "SKOV IMX6 CPU SoloCore";
> + compatible = "skov,imx6dl-skov-revc-lt6", "fsl,imx6dl";
> +
> + backlight: backlight {
> + compatible = "pwm-backlight";
> + pinctrl-names = "default";
> + pinctrl-0 = <_backlight>;
> + enable-gpios = < 23 GPIO_ACTIVE_LOW>;
> + pwms = < 0 2 0>;
> + brightness-levels = <0 255>;
> + num-interpolated-steps = <17>;
> + default-brightness-level = <8>;
> + power-supply = <_24v0>;
> + };
> +
> + display {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + compatible = "fsl,imx-parallel-display";
> + pinctrl-names = "default";
> + pinctrl-0 = <_ipu1>;
> +
> + port@0 {
> + reg = <0>;
> +
> + display0_in: endpoint {
> + remote-endpoint = <_di0_disp0>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + display0_out: endpoint {
> + remote-endpoint = <_in>;
> + };
> + };
> + };
> +
> +
> + panel {
> + compatible = "logictechno,lttd800480070-l6wh-rt";
> + backlight = <>;
> + power-supply = <_3v3>;
> +
> + port {
> + panel_in: endpoint {
> + remote-endpoint = <_out>;
> + };
> + };
> + };
> +};
> +
> +_di0_disp0 {
> + remote-endpoint = <_in>;
> +};
> +
> + {
> + 

Re: [PATCHv2 5/5] ARM: dts: imx6: Add GE B1x5v2

2021-05-22 Thread Shawn Guo
On Thu, Apr 29, 2021 at 12:29:53AM +0200, Sebastian Reichel wrote:
> This adds device tree files for the General Electric Healthcare
> (GEHC) B1x5v2 series. All models make use of Congatec's QMX6 module,
> which is described in its own device tree include, so that it can
> also be used by other boards.
> 
> Signed-off-by: Sebastian Reichel 
> ---
>  arch/arm/boot/dts/Makefile|   5 +
>  arch/arm/boot/dts/imx6dl-b105pv2.dts  |  35 ++
>  arch/arm/boot/dts/imx6dl-b105v2.dts   |  35 ++
>  arch/arm/boot/dts/imx6dl-b125pv2.dts  |  33 ++
>  arch/arm/boot/dts/imx6dl-b125v2.dts   |  33 ++
>  arch/arm/boot/dts/imx6dl-b155v2.dts   |  36 ++
>  arch/arm/boot/dts/imx6dl-b1x5pv2.dtsi | 434 ++
>  arch/arm/boot/dts/imx6dl-b1x5v2.dtsi  |  61 +++
>  arch/arm/boot/dts/imx6dl-qmx6.dtsi| 624 ++
>  9 files changed, 1296 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-b105pv2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-b105v2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-b125pv2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-b125v2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-b155v2.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-b1x5pv2.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6dl-b1x5v2.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6dl-qmx6.dtsi
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index f8f09c5066e7..811f22ed1e37 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -515,6 +515,11 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6q-dms-ba16.dtb \
>   imx6q-emcon-avari.dtb \
>   imx6q-evi.dtb \
> + imx6dl-b105v2.dtb \
> + imx6dl-b105pv2.dtb \

'p' goes before 'v'.

> + imx6dl-b125v2.dtb \
> + imx6dl-b125pv2.dtb \
> + imx6dl-b155v2.dtb \
>   imx6q-gk802.dtb \
>   imx6q-gw51xx.dtb \
>   imx6q-gw52xx.dtb \
> diff --git a/arch/arm/boot/dts/imx6dl-b105pv2.dts 
> b/arch/arm/boot/dts/imx6dl-b105pv2.dts
> new file mode 100644
> index ..0d5be2f9471f
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-b105pv2.dts
> @@ -0,0 +1,35 @@
> +// SPDX-License-Identifier: GPL-2.0 or MIT
> +//
> +// Device Tree Source for General Electric B105Pv2
> +//
> +// Copyright 2018-2021 General Electric Company
> +// Copyright 2018-2021 Collabora
> +
> +/dts-v1/;
> +#include "imx6dl-b1x5pv2.dtsi"
> +
> +/ {
> + model = "General Electric B105Pv2";
> + compatible = "ge,imx6dl-b105pv2", "congatec,qmx6", "fsl,imx6dl";
> +
> + panel {
> + compatible = "auo,g101evn010";
> + status = "okay";

Unneeded okay status.

> + };
> +};
> +
> + {
> + touchscreen@41 {
> + reg = <0x41>;

We generally start property list with 'compatible'.

> + compatible = "ilitek,ili251x";
> +

In general, we do not use newline in middle of property list.

> + pinctrl-names = "default";
> + pinctrl-0 =<_q7_gpio0>;
> + interrupt-parent = <>;
> + interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
> + reset-gpios = < 21 GPIO_ACTIVE_LOW>;
> +
> + touchscreen-size-x = <1280>;
> + touchscreen-size-y = <800>;
> + };
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-b105v2.dts 
> b/arch/arm/boot/dts/imx6dl-b105v2.dts
> new file mode 100644
> index ..72a085348304
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-b105v2.dts
> @@ -0,0 +1,35 @@
> +// SPDX-License-Identifier: GPL-2.0 or MIT
> +//
> +// Device Tree Source for General Electric B105v2
> +//
> +// Copyright 2018-2021 General Electric Company
> +// Copyright 2018-2021 Collabora
> +
> +/dts-v1/;
> +#include "imx6dl-b1x5v2.dtsi"
> +
> +/ {
> + model = "General Electric B105v2";
> + compatible = "ge,imx6dl-b105v2", "congatec,qmx6", "fsl,imx6dl";
> +
> + panel {
> + compatible = "auo,g101evn010";
> + status = "okay";
> + };
> +};
> +
> + {
> + touchscreen@41 {
> + reg = <0x41>;
> + compatible = "ilitek,ili251x";
> +
> + pinctrl-names = "default";
> + pinctrl-0 =<_q7_gpio0>;
> + interrupt-parent = <>;
> + interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
> + reset-gpios = < 21 GPIO_ACTIVE_LOW>;
> +
> + touchscreen-size-x = <1280>;
> + touchscreen-size-y = <800>;
> + };
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-b125pv2.dts 
> b/arch/arm/boot/dts/imx6dl-b125pv2.dts
> new file mode 100644
> index ..8fd6c8ed6750
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-b125pv2.dts
> @@ -0,0 +1,33 @@
> +// SPDX-License-Identifier: GPL-2.0 or MIT
> +//
> +// Device Tree Source for General Electric B125Pv2
> +//
> +// Copyright 2018-2021 General Electric Company
> +// Copyright 2018-2021 Collabora
> +
> +/dts-v1/;
> +#include "imx6dl-b1x5pv2.dtsi"
> +
> +/ {
> + model = "General Electric B125Pv2";
> + compatible = "ge,imx6dl-b125pv2", 

Re: [PATCH v7 0/8] mainline Plymovent M2M and BAS board

2021-01-06 Thread Shawn Guo
On Mon, Dec 07, 2020 at 03:09:31PM +0100, Oleksij Rempel wrote:
> changes v7:
> - panel-simple.yaml: fix comments and part order
> - panel-simple.yaml: invent a product description for the Kyocera tcg070wvlq 
> panel
> 
> changes v6:
> - do more panel-simple.yaml related cleanups
> 
> changes v5:
> - rebase against latest shawngup/for-next
> - add patch to fix checkpatch warning on PLYM2M dts
> 
> changes v4:
> - add PLYBAS board
> - PLYM2M: add touchscreen node
> - PLYM2M: add rename led nodes to led-x
> 
> changes v3:
> - use old style copyright text
> 
> changes v2:
> - fsl.yaml: reorder ply,plym2m
> - imx6dl-plym2m.dts: use hyphen instead of underscore in phy-clock
> 
> Oleksij Rempel (8):
>   dt-bindings: display: simple: fix alphabetical order for EDT
> compatibles
>   dt-bindings: display: simple: add EDT compatibles already supported by
> the driver
>   dt-bindings: display: simple: Add Kyocera tcg070wvlq panel
>   dt-bindings: vendor-prefixes: Add an entry for Plymovent
>   dt-bindings: arm: fsl: add Plymovent M2M board
>   ARM: dts: add Plymovent M2M board
>   dt-bindings: arm: fsl: add Plymovent BAS board
>   ARM: dts: add Plymovent BAS board

Applied all, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/bridge: ti-sn65dsi86: Implement the pwm_chip

2020-12-10 Thread Shawn Guo
Hi Uwe,

On Thu, Dec 10, 2020 at 9:05 PM Uwe Kleine-König
 wrote:
> > > @@ -111,6 +118,8 @@
> > >
> > >  #define SN_LINK_TRAINING_TRIES 10
> > >
> > > +#define SN_PWM_GPIO3
> >
> > So this maps to the GPIO4 described in sn65dsi86 datasheet.  I'm
> > wondering if it's more readable to define the following SHIFT constants
> > (your code), and use GPIO_MUX_GPIO4_SHIFT >> 2 where you need GPIO
> > offset?
> >
> > #define  GPIO_MUX_GPIO1_SHIFT 0
> > #define  GPIO_MUX_GPIO2_SHIFT 2
> > #define  GPIO_MUX_GPIO3_SHIFT 4
> > #define  GPIO_MUX_GPIO4_SHIFT 6
> >
> > If you agree, you may consider to integrate this patch beforehand:
> >
> > https://github.com/shawnguo2/linux/commit/7cde887ffb3b27a36e77a08bee3666d14968b586
>
> My preferred way here would be to add a prefix for the other constants.
> It (IMHO) looks nicer and
>
> GPIO_INPUT_SHIFT
>
> looks like a quite generic name for a hardware specific definition.

While this looks like a reasonable argument, I also like the naming
choice for these constants in the beginning for that distinction
between registers and bits.  And changing the names the other way
around means there will be a much bigger diffstat, which I would like
to avoid.  I suggest let's just focus on what really matters here -
keep the naming consistent, so that people do not get confused when
they want to add more constants in there.

Shawn

> (Even if up to now there is no other code location using this name.)
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/bridge: ti-sn65dsi86: rename GPIO register bits

2020-12-10 Thread Shawn Guo
From: Shawn Guo 

It renames GPIO register bits to drop 'SN_' prefix, so that they are
consistent to other definitions - prefixing register name with 'SN_' but
not for bit fields.

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 26 +-
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c 
b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index f27306c51e4d..8eac9d77eba1 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -63,13 +63,13 @@
 #define SN_HPD_DISABLE_REG 0x5C
 #define  HPD_DISABLE   BIT(0)
 #define SN_GPIO_IO_REG 0x5E
-#define  SN_GPIO_INPUT_SHIFT   4
-#define  SN_GPIO_OUTPUT_SHIFT  0
+#define  GPIO_INPUT_SHIFT  4
+#define  GPIO_OUTPUT_SHIFT 0
 #define SN_GPIO_CTRL_REG   0x5F
-#define  SN_GPIO_MUX_INPUT 0
-#define  SN_GPIO_MUX_OUTPUT1
-#define  SN_GPIO_MUX_SPECIAL   2
-#define  SN_GPIO_MUX_MASK  0x3
+#define  GPIO_MUX_INPUT0
+#define  GPIO_MUX_OUTPUT   1
+#define  GPIO_MUX_SPECIAL  2
+#define  GPIO_MUX_MASK 0x3
 #define SN_AUX_WDATA_REG(x)(0x64 + (x))
 #define SN_AUX_ADDR_19_16_REG  0x74
 #define SN_AUX_ADDR_15_8_REG   0x75
@@ -1035,7 +1035,7 @@ static int ti_sn_bridge_gpio_get(struct gpio_chip *chip, 
unsigned int offset)
if (ret)
return ret;
 
-   return !!(val & BIT(SN_GPIO_INPUT_SHIFT + offset));
+   return !!(val & BIT(GPIO_INPUT_SHIFT + offset));
 }
 
 static void ti_sn_bridge_gpio_set(struct gpio_chip *chip, unsigned int offset,
@@ -1051,8 +1051,8 @@ static void ti_sn_bridge_gpio_set(struct gpio_chip *chip, 
unsigned int offset,
 
val &= 1;
ret = regmap_update_bits(pdata->regmap, SN_GPIO_IO_REG,
-BIT(SN_GPIO_OUTPUT_SHIFT + offset),
-val << (SN_GPIO_OUTPUT_SHIFT + offset));
+BIT(GPIO_OUTPUT_SHIFT + offset),
+val << (GPIO_OUTPUT_SHIFT + offset));
if (ret)
dev_warn(pdata->dev,
 "Failed to set bridge GPIO %u: %d\n", offset, ret);
@@ -1069,8 +1069,8 @@ static int ti_sn_bridge_gpio_direction_input(struct 
gpio_chip *chip,
return 0;
 
ret = regmap_update_bits(pdata->regmap, SN_GPIO_CTRL_REG,
-SN_GPIO_MUX_MASK << shift,
-SN_GPIO_MUX_INPUT << shift);
+GPIO_MUX_MASK << shift,
+GPIO_MUX_INPUT << shift);
if (ret) {
set_bit(offset, pdata->gchip_output);
return ret;
@@ -1103,8 +1103,8 @@ static int ti_sn_bridge_gpio_direction_output(struct 
gpio_chip *chip,
 
/* Set direction */
ret = regmap_update_bits(pdata->regmap, SN_GPIO_CTRL_REG,
-SN_GPIO_MUX_MASK << shift,
-SN_GPIO_MUX_OUTPUT << shift);
+GPIO_MUX_MASK << shift,
+GPIO_MUX_OUTPUT << shift);
if (ret) {
clear_bit(offset, pdata->gchip_output);
pm_runtime_put(pdata->dev);
-- 
2.17.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/bridge: ti-sn65dsi86: Implement the pwm_chip

2020-12-09 Thread Shawn Guo
On Mon, Dec 07, 2020 at 10:40:22PM -0600, Bjorn Andersson wrote:
> The SN65DSI86 provides the ability to supply a PWM signal on GPIO 4,
> with the primary purpose of controlling the backlight of the attached
> panel. Add an implementation that exposes this using the standard PWM
> framework, to allow e.g. pwm-backlight to expose this to the user.
> 
> Special thanks to Doug Anderson for suggestions related to the involved
> math.
> 
> Signed-off-by: Bjorn Andersson 
> ---
>  drivers/gpu/drm/bridge/ti-sn65dsi86.c | 202 ++
>  1 file changed, 202 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c 
> b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> index f27306c51e4d..43c0acba57ab 100644
> --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
> @@ -4,6 +4,7 @@
>   * datasheet: https://www.ti.com/lit/ds/symlink/sn65dsi86.pdf
>   */
>  
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -14,6 +15,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  
> @@ -89,6 +91,11 @@
>  #define SN_ML_TX_MODE_REG0x96
>  #define  ML_TX_MAIN_LINK_OFF 0
>  #define  ML_TX_NORMAL_MODE   BIT(0)
> +#define SN_PWM_PRE_DIV_REG   0xA0
> +#define SN_BACKLIGHT_SCALE_REG   0xA1
> +#define  BACKLIGHT_SCALE_MAX 0x
> +#define SN_BACKLIGHT_REG 0xA3
> +#define SN_PWM_EN_INV_REG0xA5
>  #define SN_AUX_CMD_STATUS_REG0xF4
>  #define  AUX_IRQ_STATUS_AUX_RPLY_TOUTBIT(3)
>  #define  AUX_IRQ_STATUS_AUX_SHORTBIT(5)
> @@ -111,6 +118,8 @@
>  
>  #define SN_LINK_TRAINING_TRIES   10
>  
> +#define SN_PWM_GPIO  3

So this maps to the GPIO4 described in sn65dsi86 datasheet.  I'm
wondering if it's more readable to define the following SHIFT constants
(your code), and use GPIO_MUX_GPIO4_SHIFT >> 2 where you need GPIO
offset?

#define  GPIO_MUX_GPIO1_SHIFT   0
#define  GPIO_MUX_GPIO2_SHIFT   2
#define  GPIO_MUX_GPIO3_SHIFT   4
#define  GPIO_MUX_GPIO4_SHIFT   6

If you agree, you may consider to integrate this patch beforehand:

https://github.com/shawnguo2/linux/commit/7cde887ffb3b27a36e77a08bee3666d14968b586


Shawn

> +
>  /**
>   * struct ti_sn_bridge - Platform data for ti-sn65dsi86 driver.
>   * @dev:  Pointer to our device.
> @@ -162,6 +171,12 @@ struct ti_sn_bridge {
>   struct gpio_chipgchip;
>   DECLARE_BITMAP(gchip_output, SN_NUM_GPIOS);
>  #endif
> +#if defined(CONFIG_PWM)
> + struct pwm_chip pchip;
> + boolpwm_enabled;
> + unsigned intpwm_refclk;
> + atomic_tpwm_pin_busy;
> +#endif
>  };
>  
>  static const struct regmap_range ti_sn_bridge_volatile_ranges[] = {
> @@ -499,6 +514,14 @@ static void ti_sn_bridge_set_refclk_freq(struct 
> ti_sn_bridge *pdata)
>  
>   regmap_update_bits(pdata->regmap, SN_DPPLL_SRC_REG, REFCLK_FREQ_MASK,
>  REFCLK_FREQ(i));
> +
> +#if defined(CONFIG_PWM)
> + /*
> +  * The PWM refclk is based on the value written to SN_DPPLL_SRC_REG,
> +  * regardless of its actual sourcing.
> +  */
> + pdata->pwm_refclk = ti_sn_bridge_refclk_lut[i];
> +#endif
>  }
>  
>  static void ti_sn_bridge_set_dsi_rate(struct ti_sn_bridge *pdata)
> @@ -981,6 +1004,161 @@ static int ti_sn_bridge_parse_dsi_host(struct 
> ti_sn_bridge *pdata)
>   return 0;
>  }
>  
> +#if defined(CONFIG_PWM)
> +static int ti_sn_pwm_pin_request(struct ti_sn_bridge *pdata)
> +{
> + return atomic_xchg(>pwm_pin_busy, 1) ? -EBUSY : 0;
> +}
> +
> +static void ti_sn_pwm_pin_release(struct ti_sn_bridge *pdata)
> +{
> + atomic_set(>pwm_pin_busy, 0);
> +}
> +
> +static struct ti_sn_bridge *
> +pwm_chip_to_ti_sn_bridge(struct pwm_chip *chip)
> +{
> + return container_of(chip, struct ti_sn_bridge, pchip);
> +}
> +
> +static int ti_sn_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
> +{
> + struct ti_sn_bridge *pdata = pwm_chip_to_ti_sn_bridge(chip);
> +
> + return ti_sn_pwm_pin_request(pdata);
> +}
> +
> +static void ti_sn_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
> +{
> + struct ti_sn_bridge *pdata = pwm_chip_to_ti_sn_bridge(chip);
> +
> + ti_sn_pwm_pin_release(pdata);
> +}
> +
> +static int ti_sn_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
> +const struct pwm_state *state)
> +{
> + struct ti_sn_bridge *pdata = pwm_chip_to_ti_sn_bridge(chip);
> + unsigned int pwm_en_inv;
> + unsigned int backlight;
> + unsigned int pwm_freq;
> + unsigned int pre_div;
> + unsigned int scale;
> + int ret;
> +
> + if (!pdata->pwm_enabled) {
> + ret = pm_runtime_get_sync(pdata->dev);
> + if (ret < 0)
> + return ret;
> +
> 

Re: [PATCH] Revert "i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630"

2020-11-29 Thread Shawn Guo
On Tue, Nov 24, 2020 at 12:57:43PM -0600, Bjorn Andersson wrote:
> A combination of recent bug fixes by Doug Anderson and the proper
> definition of iommu streams means that this hack is no longer needed.
> Let's clean up the code by reverting '127068abe85b ("i2c: qcom-geni:
> Disable DMA processing on the Lenovo Yoga C630")'.
> 
> Signed-off-by: Bjorn Andersson 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/drm_vblank: use drm_warn_once() to warn undefined mode timing

2020-10-21 Thread Shawn Guo
On Mon, Oct 19, 2020 at 05:48:29PM +0200, Daniel Vetter wrote:
> On Fri, Oct 16, 2020 at 07:46:41PM +0800, Shawn Guo wrote:
> > Indeed!  Adding drm_crtc_vblank_reset() into driver crtc reset hook
> > removes the WARNING for me.  Really appreciate your comments, Daniel!
> 
> This should work automatically if you're using the atomic state helpers.
> Please try to unify as much as possible, so you're not missing any future
> bugfixes in this area. Although I thought I've completely reviewed all
> drivers to fix as many as possible for this bug. Are you on some older
> kernel that didn't have this? Maybe good idea to submit the bugfix in
> upstream to stable, if that's the case.

Yes, I'm running a 4.19 stable kernel with msm/mdp5 device.  The bug was
addressed (unintentionally?) by one patch that is part of the series
adding Nexus 5 display support.  And later on, you commit 51f644b40b4b
("drm/atomic-helper: reset vblank on crtc reset") switches the driver to
use atomic state helper.

Shawn

[1] https://lore.kernel.org/patchwork/patch/1082564/

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/drm_vblank: use drm_warn_once() to warn undefined mode timing

2020-10-16 Thread Shawn Guo
On Fri, Oct 16, 2020 at 11:30:04AM +0200, Daniel Vetter wrote:
> On Fri, Oct 16, 2020 at 10:54 AM Shawn Guo  wrote:
> >
> > On Fri, Oct 16, 2020 at 09:58:46AM +0200, Daniel Vetter wrote:
> > > On Fri, Oct 16, 2020 at 9:13 AM Shawn Guo  wrote:
> > > >
> > > > Commit 5caa0feafcc6 ("drm/vblank: Lock down vblank->hwmode more") added
> > > > WARN_ON_ONCE() for atomic drivers to warn the case that vsync is enabled
> > > > before a mode has been set on CRTC.  This happens sometimes during the
> > > > initial mode setting of a CRTC.  It also happens on Android running HWC2
> > > > backed with drm_hwcomposer, where HWC2::SetVsyncEnabled could be called
> > > > before the atomic mode setting on CRTC happens.
> > > >
> > > > In this case, there is nothing really bad to happen as kernel function
> > > > returns as no-op.  So using WARN() version might be overkilled,
> > > > considering some user space crash reporting services may treat kernel
> > > > WARNINGS as crashes.  Let's drop WARN_ON_ONCE() and change 
> > > > drm_dbg_core()
> > > > to drm_warn_once() for warning undefined mode timing.
> > >
> > > This indicates a bug in your driver. Please fix it there, not by
> > > shutting up the core code complaining about that. Either you're
> > > getting vblank timestamps when the vblank isn't set up yet
> > > (drm_crtc_vblank_on/off) or there's some other race going on in your
> > > driver code resulting in this.
> >
> > Thanks for the comment, Daniel.
> >
> > I'm hitting this warning on an Android running drm_hwcomposer.  I'm
> > indeed getting vblank timestamps request before drm_crtc_vblank_on() is
> > called.  I'm not sure this is a bug or race condition in the driver
> > code, as both vblank timestamps and on/off requests are coming from user
> > space ioctl for my case.  @Sean, that means the problem is in Android
> > drm_hwcomposer code?
> 
> vblank request when the crtc is off should be rejected. Most drivers
> got this wrong before I added the required drm_crtc_vblank_reset()
> into atomic helpers in 51f644b40b4b ("drm/atomic-helper: reset vblank
> on crtc reset")
> 
> Please make sure you have that, and that drm_crtc_vblank_reset is run
> at driver load time. If the crtc is off, vblank ioctl should be
> rejected. So this is definitely not a userspace bug, still a driver
> bug. In general, userspace is not allowed to do anything that results
> in dmesg spam at normal log levels. Anytime that happens it's a kernel
> bug. And if it's a warning in core code, it's most likely a driver bug
> since the core code tends to be better debugged about these things.
> But there's ofc exceptions.

Indeed!  Adding drm_crtc_vblank_reset() into driver crtc reset hook
removes the WARNING for me.  Really appreciate your comments, Daniel!

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/drm_vblank: use drm_warn_once() to warn undefined mode timing

2020-10-16 Thread Shawn Guo
On Fri, Oct 16, 2020 at 09:58:46AM +0200, Daniel Vetter wrote:
> On Fri, Oct 16, 2020 at 9:13 AM Shawn Guo  wrote:
> >
> > Commit 5caa0feafcc6 ("drm/vblank: Lock down vblank->hwmode more") added
> > WARN_ON_ONCE() for atomic drivers to warn the case that vsync is enabled
> > before a mode has been set on CRTC.  This happens sometimes during the
> > initial mode setting of a CRTC.  It also happens on Android running HWC2
> > backed with drm_hwcomposer, where HWC2::SetVsyncEnabled could be called
> > before the atomic mode setting on CRTC happens.
> >
> > In this case, there is nothing really bad to happen as kernel function
> > returns as no-op.  So using WARN() version might be overkilled,
> > considering some user space crash reporting services may treat kernel
> > WARNINGS as crashes.  Let's drop WARN_ON_ONCE() and change drm_dbg_core()
> > to drm_warn_once() for warning undefined mode timing.
> 
> This indicates a bug in your driver. Please fix it there, not by
> shutting up the core code complaining about that. Either you're
> getting vblank timestamps when the vblank isn't set up yet
> (drm_crtc_vblank_on/off) or there's some other race going on in your
> driver code resulting in this.

Thanks for the comment, Daniel.

I'm hitting this warning on an Android running drm_hwcomposer.  I'm
indeed getting vblank timestamps request before drm_crtc_vblank_on() is
called.  I'm not sure this is a bug or race condition in the driver
code, as both vblank timestamps and on/off requests are coming from user
space ioctl for my case.  @Sean, that means the problem is in Android
drm_hwcomposer code?

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/drm_vblank: use drm_warn_once() to warn undefined mode timing

2020-10-16 Thread Shawn Guo
Commit 5caa0feafcc6 ("drm/vblank: Lock down vblank->hwmode more") added
WARN_ON_ONCE() for atomic drivers to warn the case that vsync is enabled
before a mode has been set on CRTC.  This happens sometimes during the
initial mode setting of a CRTC.  It also happens on Android running HWC2
backed with drm_hwcomposer, where HWC2::SetVsyncEnabled could be called
before the atomic mode setting on CRTC happens.

In this case, there is nothing really bad to happen as kernel function
returns as no-op.  So using WARN() version might be overkilled,
considering some user space crash reporting services may treat kernel
WARNINGS as crashes.  Let's drop WARN_ON_ONCE() and change drm_dbg_core()
to drm_warn_once() for warning undefined mode timing.

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/drm_vblank.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index b18e1efbbae1..5f7c4a923e8a 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -717,9 +717,9 @@ drm_crtc_vblank_helper_get_vblank_timestamp_internal(
 * Happens during initial modesetting of a crtc.
 */
if (mode->crtc_clock == 0) {
-   drm_dbg_core(dev, "crtc %u: Noop due to uninitialized mode.\n",
-pipe);
-   drm_WARN_ON_ONCE(dev, drm_drv_uses_atomic_modeset(dev));
+   drm_warn_once(dev, "crtc %u: Noop due to uninitialized mode.\n",
+ pipe);
+
return false;
}
 
-- 
2.17.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 03/13] dt-bindings: arm: fsl: Fix matching Purism Librem5 phones

2020-09-21 Thread Shawn Guo
On Fri, Sep 04, 2020 at 04:53:02PM +0200, Krzysztof Kozlowski wrote:
> All Purism Librem5 phones have three compatibles so they need their own
> entry to fix dbts_check warnings like:
> 
>   arch/arm64/boot/dts/freescale/imx8mq-librem5-r2.dt.yaml: /:
> compatible: ['purism,librem5r2', 'purism,librem5', 'fsl,imx8mq'] is not 
> valid under any of the given schemas
> 
>   arch/arm64/boot/dts/freescale/imx8mq-librem5-r2.dt.yaml: /:
> compatible: ['purism,librem5r2', 'purism,librem5', 'fsl,imx8mq'] is too 
> long
> 
> Signed-off-by: Krzysztof Kozlowski 

Applied, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 08/13] arm64: dts: imx8mm-var-som-symphony: Use newer interrupts property

2020-09-12 Thread Shawn Guo
On Fri, Sep 04, 2020 at 04:53:07PM +0200, Krzysztof Kozlowski wrote:
> The int-gpios was deprecated in favor of generic interrupts property.
> 
> Signed-off-by: Krzysztof Kozlowski 

Applied patch #8 ~ #13, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH for v5.9] ARM: dts: mxs: Replace HTTP links with HTTPS ones

2020-07-19 Thread Shawn Guo
On Sun, Jul 19, 2020 at 12:10:08PM +0200, Alexander A. Klimov wrote:
> Rationale:
> Reduces attack surface on kernel devs opening the links for MITM
> as HTTPS traffic is much harder to manipulate.
> 
> Deterministic algorithm:
> For each file:
>   If not .svg:
> For each line:
>   If doesn't contain `\bxmlns\b`:
> For each link, `\bhttp://[^# \t\r\n]*(?:\w|/)`:
> If neither `\bgnu\.org/license`, nor `\bmozilla\.org/MPL\b`:
> If both the HTTP and HTTPS versions
> return 200 OK and serve the same content:
>   Replace HTTP with HTTPS.
> 
> Signed-off-by: Alexander A. Klimov 

s/mxs/imx in the subject.  Otherwise:

Acked-by: Shawn Guo 

> ---
>  Continuing my work started at 93431e0607e5.
>  See also: git log --oneline '--author=Alexander A. Klimov 
> ' v5.7..master
>  (Actually letting a shell for loop submit all this stuff for me.)
> 
>  If there are any URLs to be removed completely
>  or at least not (just) HTTPSified:
>  Just clearly say so and I'll *undo my change*.
>  See also: https://lkml.org/lkml/2020/6/27/64
> 
>  If there are any valid, but yet not changed URLs:
>  See: https://lkml.org/lkml/2020/6/26/837
> 
>  If you apply the patch, please let me know.
> 
>  Sorry again to all maintainers who complained about subject lines.
>  Now I realized that you want an actually perfect prefixes,
>  not just subsystem ones.
>  I tried my best...
>  And yes, *I could* (at least half-)automate it.
>  Impossible is nothing! :)
> 
> 
>  arch/arm/boot/dts/imx23-pinfunc.h | 4 ++--
>  arch/arm/boot/dts/imx28-pinfunc.h | 4 ++--
>  arch/arm/boot/dts/imx53-tx53-x13x.dts | 4 ++--
>  arch/arm/boot/dts/mxs-pinfunc.h   | 4 ++--
>  include/video/imx-ipu-v3.h| 4 ++--
>  5 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx23-pinfunc.h 
> b/arch/arm/boot/dts/imx23-pinfunc.h
> index 5c0f32ca3a93..f9d7eb6679de 100644
> --- a/arch/arm/boot/dts/imx23-pinfunc.h
> +++ b/arch/arm/boot/dts/imx23-pinfunc.h
> @@ -7,8 +7,8 @@
>   * License. You may obtain a copy of the GNU General Public License
>   * Version 2 at the following locations:
>   *
> - * http://www.opensource.org/licenses/gpl-license.html
> - * http://www.gnu.org/copyleft/gpl.html
> + * https://www.opensource.org/licenses/gpl-license.html
> + * https://www.gnu.org/copyleft/gpl.html
>   */
>  
>  #ifndef __DT_BINDINGS_MX23_PINCTRL_H__
> diff --git a/arch/arm/boot/dts/imx28-pinfunc.h 
> b/arch/arm/boot/dts/imx28-pinfunc.h
> index e11f69ba0fe4..ffd5412b70ae 100644
> --- a/arch/arm/boot/dts/imx28-pinfunc.h
> +++ b/arch/arm/boot/dts/imx28-pinfunc.h
> @@ -7,8 +7,8 @@
>   * License. You may obtain a copy of the GNU General Public License
>   * Version 2 at the following locations:
>   *
> - * http://www.opensource.org/licenses/gpl-license.html
> - * http://www.gnu.org/copyleft/gpl.html
> + * https://www.opensource.org/licenses/gpl-license.html
> + * https://www.gnu.org/copyleft/gpl.html
>   */
>  
>  #ifndef __DT_BINDINGS_MX28_PINCTRL_H__
> diff --git a/arch/arm/boot/dts/imx53-tx53-x13x.dts 
> b/arch/arm/boot/dts/imx53-tx53-x13x.dts
> index 6cdf2082c742..a34d98cf6ed4 100644
> --- a/arch/arm/boot/dts/imx53-tx53-x13x.dts
> +++ b/arch/arm/boot/dts/imx53-tx53-x13x.dts
> @@ -41,8 +41,8 @@
>   * License. You may obtain a copy of the GNU General Public License
>   * Version 2 at the following locations:
>   *
> - * http://www.opensource.org/licenses/gpl-license.html
> - * http://www.gnu.org/copyleft/gpl.html
> + * https://www.opensource.org/licenses/gpl-license.html
> + * https://www.gnu.org/copyleft/gpl.html
>   */
>  
>  /dts-v1/;
> diff --git a/arch/arm/boot/dts/mxs-pinfunc.h b/arch/arm/boot/dts/mxs-pinfunc.h
> index c6da987b20cb..6766292eee30 100644
> --- a/arch/arm/boot/dts/mxs-pinfunc.h
> +++ b/arch/arm/boot/dts/mxs-pinfunc.h
> @@ -7,8 +7,8 @@
>   * License. You may obtain a copy of the GNU General Public License
>   * Version 2 at the following locations:
>   *
> - * http://www.opensource.org/licenses/gpl-license.html
> - * http://www.gnu.org/copyleft/gpl.html
> + * https://www.opensource.org/licenses/gpl-license.html
> + * https://www.gnu.org/copyleft/gpl.html
>   */
>  
>  #ifndef __DT_BINDINGS_MXS_PINCTRL_H__
> diff --git a/include/video/imx-ipu-v3.h b/include/video/imx-ipu-v3.h
> index 06b0b57e996c..749490e3c66e 100644
> --- a/include/video/imx-ipu-v3.h
> +++ b/include/video/imx-ipu-v3.h
> @@ -5,8 +5,8 @@
>   * Public License.  You may obtain a copy of the GNU Lesser General
>   * Public License Version 2.1 or later at the following locations:
>   *
> - * http://www.opensource.org/licenses/lgpl-license.

Re: [PATCH v2] drm/atomic_helper: add a flag for duplicating drm_private_obj state

2020-07-11 Thread Shawn Guo
On Sat, Jun 27, 2020 at 7:53 PM Shawn Guo  wrote:
>
> From: Shawn Guo 
>
> The msm/mdp5 driver uses state of drm_private_obj as its global atomic
> state, which keeps the assignment of hwpipe to plane.  With
> drm_private_obj missing from duplicate state call in context of atomic
> suspend/resume helpers, mdp5 suspend works with no problem only for the
> very first time.  Any subsequent suspend will hit the following warning,
> because hwpipe assignment doesn't get duplicated for suspend state.
>
> $ echo mem > /sys/power/state
> [   38.44] PM: suspend entry (deep)
> [   38.85] PM: Syncing filesystems ... done.
> [   38.114630] Freezing user space processes ... (elapsed 0.001 seconds) done.
> [   38.115912] OOM killer disabled.
> [   38.115914] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) 
> done.
> [   38.122170] [ cut here ]
> [   38.122212] WARNING: CPU: 0 PID: 1747 at 
> drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c:145 mdp5_pipe_release+0x90/0xc0
> [   38.122215] Modules linked in:
> [   38.12] CPU: 0 PID: 1747 Comm: sh Not tainted 
> 4.19.107-00515-g9d5e4d7a33ed-dirty #323
> [   38.14] Hardware name: Square, Inc. T2 Devkit (DT)
> [   38.18] pstate: 4005 (nZcv daif -PAN -UAO)
> [   38.122230] pc : mdp5_pipe_release+0x90/0xc0
> [   38.122233] lr : mdp5_pipe_release+0x90/0xc0
> [   38.122235] sp : 0d13b7f0
> [   38.122236] x29: 0d13b7f0 x28: 
> [   38.122240] x27: 0002 x26: 800079adce00
> [   38.122243] x25: 800079405200 x24: 
> [   38.122246] x23: 80007a78cc08 x22: 80007b1cc018
> [   38.122249] x21: 80007b1cc000 x20: 80007b317080
> [   38.122252] x19: 80007a78ce80 x18: 0002
> [   38.122255] x17:  x16: 
> [   38.122258] x15: fff0 x14: 08c3fb48
> [   38.122261] x13: 08cdac4a x12: 08c3f000
> [   38.122264] x11:  x10: 08cda000
> [   38.122267] x9 :  x8 : 08ce4a40
> [   38.122269] x7 :  x6 : 39ea41a9
> [   38.122272] x5 :  x4 : 
> [   38.122275] x3 :  x2 : c7580c109cae4500
> [   38.122278] x1 :  x0 : 0024
> [   38.122281] Call trace:
> [   38.122285]  mdp5_pipe_release+0x90/0xc0
> [   38.122288]  mdp5_plane_atomic_check+0x2c0/0x448
> [   38.122294]  drm_atomic_helper_check_planes+0xd0/0x208
> [   38.122298]  drm_atomic_helper_check+0x38/0xa8
> [   38.122302]  drm_atomic_check_only+0x3e8/0x630
> [   38.122305]  drm_atomic_commit+0x18/0x58
> [   38.122309]  __drm_atomic_helper_disable_all.isra.12+0x15c/0x1a8
> [   38.122312]  drm_atomic_helper_suspend+0x80/0xf0
> [   38.122316]  msm_pm_suspend+0x4c/0x70
> [   38.122320]  dpm_run_callback.isra.6+0x20/0x68
> [   38.122323]  __device_suspend+0x110/0x308
> [   38.122326]  dpm_suspend+0x100/0x1f0
> [   38.122329]  dpm_suspend_start+0x64/0x70
> [   38.122334]  suspend_devices_and_enter+0x110/0x500
> [   38.122336]  pm_suspend+0x268/0x2c0
> [   38.122339]  state_store+0x88/0x110
> [   38.122345]  kobj_attr_store+0x14/0x28
> [   38.122352]  sysfs_kf_write+0x3c/0x50
> [   38.122355]  kernfs_fop_write+0x118/0x1e0
> [   38.122360]  __vfs_write+0x30/0x168
> [   38.122363]  vfs_write+0xa4/0x1a8
> [   38.122366]  ksys_write+0x64/0xe8
> [   38.122368]  __arm64_sys_write+0x18/0x20
> [   38.122374]  el0_svc_common+0x6c/0x178
> [   38.122377]  el0_svc_compat_handler+0x1c/0x28
> [   38.122381]  el0_svc_compat+0x8/0x18
> [   38.122383] ---[ end trace 24145b7d8545345b ]---
> [   38.491552] Disabling non-boot CPUs ...
>
> Let's add a flag for duplicating the state of drm_private_obj and set
> the flag from msm/mdp5 driver, so that the problem can be fixed while
> other drivers using drm_private_obj stay unaffected.
>
> Signed-off-by: Shawn Guo 
> ---
> Changes for v2:
>  - Add a flag to duplicate the state of drm_private_obj conditionally,
>so that other drivers using drm_private_obj stay unaffected.

Hi Daniel,

Are you okay with this version?

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2] drm/atomic_helper: add a flag for duplicating drm_private_obj state

2020-06-27 Thread Shawn Guo
From: Shawn Guo 

The msm/mdp5 driver uses state of drm_private_obj as its global atomic
state, which keeps the assignment of hwpipe to plane.  With
drm_private_obj missing from duplicate state call in context of atomic
suspend/resume helpers, mdp5 suspend works with no problem only for the
very first time.  Any subsequent suspend will hit the following warning,
because hwpipe assignment doesn't get duplicated for suspend state.

$ echo mem > /sys/power/state
[   38.44] PM: suspend entry (deep)
[   38.85] PM: Syncing filesystems ... done.
[   38.114630] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   38.115912] OOM killer disabled.
[   38.115914] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) 
done.
[   38.122170] [ cut here ]
[   38.122212] WARNING: CPU: 0 PID: 1747 at 
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c:145 mdp5_pipe_release+0x90/0xc0
[   38.122215] Modules linked in:
[   38.12] CPU: 0 PID: 1747 Comm: sh Not tainted 
4.19.107-00515-g9d5e4d7a33ed-dirty #323
[   38.14] Hardware name: Square, Inc. T2 Devkit (DT)
[   38.18] pstate: 4005 (nZcv daif -PAN -UAO)
[   38.122230] pc : mdp5_pipe_release+0x90/0xc0
[   38.122233] lr : mdp5_pipe_release+0x90/0xc0
[   38.122235] sp : 0d13b7f0
[   38.122236] x29: 0d13b7f0 x28: 
[   38.122240] x27: 0002 x26: 800079adce00
[   38.122243] x25: 800079405200 x24: 
[   38.122246] x23: 80007a78cc08 x22: 80007b1cc018
[   38.122249] x21: 80007b1cc000 x20: 80007b317080
[   38.122252] x19: 80007a78ce80 x18: 0002
[   38.122255] x17:  x16: 
[   38.122258] x15: fff0 x14: 08c3fb48
[   38.122261] x13: 08cdac4a x12: 08c3f000
[   38.122264] x11:  x10: 08cda000
[   38.122267] x9 :  x8 : 08ce4a40
[   38.122269] x7 :  x6 : 39ea41a9
[   38.122272] x5 :  x4 : 
[   38.122275] x3 :  x2 : c7580c109cae4500
[   38.122278] x1 :  x0 : 0024
[   38.122281] Call trace:
[   38.122285]  mdp5_pipe_release+0x90/0xc0
[   38.122288]  mdp5_plane_atomic_check+0x2c0/0x448
[   38.122294]  drm_atomic_helper_check_planes+0xd0/0x208
[   38.122298]  drm_atomic_helper_check+0x38/0xa8
[   38.122302]  drm_atomic_check_only+0x3e8/0x630
[   38.122305]  drm_atomic_commit+0x18/0x58
[   38.122309]  __drm_atomic_helper_disable_all.isra.12+0x15c/0x1a8
[   38.122312]  drm_atomic_helper_suspend+0x80/0xf0
[   38.122316]  msm_pm_suspend+0x4c/0x70
[   38.122320]  dpm_run_callback.isra.6+0x20/0x68
[   38.122323]  __device_suspend+0x110/0x308
[   38.122326]  dpm_suspend+0x100/0x1f0
[   38.122329]  dpm_suspend_start+0x64/0x70
[   38.122334]  suspend_devices_and_enter+0x110/0x500
[   38.122336]  pm_suspend+0x268/0x2c0
[   38.122339]  state_store+0x88/0x110
[   38.122345]  kobj_attr_store+0x14/0x28
[   38.122352]  sysfs_kf_write+0x3c/0x50
[   38.122355]  kernfs_fop_write+0x118/0x1e0
[   38.122360]  __vfs_write+0x30/0x168
[   38.122363]  vfs_write+0xa4/0x1a8
[   38.122366]  ksys_write+0x64/0xe8
[   38.122368]  __arm64_sys_write+0x18/0x20
[   38.122374]  el0_svc_common+0x6c/0x178
[   38.122377]  el0_svc_compat_handler+0x1c/0x28
[   38.122381]  el0_svc_compat+0x8/0x18
[   38.122383] ---[ end trace 24145b7d8545345b ]---
[   38.491552] Disabling non-boot CPUs ...

Let's add a flag for duplicating the state of drm_private_obj and set
the flag from msm/mdp5 driver, so that the problem can be fixed while
other drivers using drm_private_obj stay unaffected.

Signed-off-by: Shawn Guo 
---
Changes for v2:
 - Add a flag to duplicate the state of drm_private_obj conditionally,
   so that other drivers using drm_private_obj stay unaffected.

 drivers/gpu/drm/drm_atomic_helper.c  | 22 ++
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c |  7 +++
 include/drm/drm_atomic.h | 11 +++
 3 files changed, 40 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
b/drivers/gpu/drm/drm_atomic_helper.c
index 85d163f16801..4bf041730b9e 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3140,6 +3140,7 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
struct drm_atomic_state *state;
struct drm_connector *conn;
struct drm_connector_list_iter conn_iter;
+   struct drm_private_obj *priv_obj;
struct drm_plane *plane;
struct drm_crtc *crtc;
int err = 0;
@@ -3184,6 +3185,19 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
}
drm_connector_list_iter_end(_iter);
 
+   drm_for_each_privobj(priv_obj, dev) {
+   struct drm_private_state *priv_state;
+
+   if (!priv_obj->needs_duplicate_state)
+   continue;
+
+   priv

[PATCH] drm/atomic_helper: duplicate state for drm_private_obj

2020-06-25 Thread Shawn Guo
From: Shawn Guo 

The msm/mdp5 driver uses drm_private_obj as its global atomic state,
which keeps the assignment of hwpipe to plane.  With drm_private_obj
missing from duplicate state call, mdp5 suspend works with no problem
only for the very first time.  Any subsequent suspend will hit the
following warning, because hwpipe assignment doesn't get duplicated for
suspend state.  Adding drm_private_obj handling for duplicate state call
fixes the problem.

$ echo mem > /sys/power/state
[   38.44] PM: suspend entry (deep)
[   38.85] PM: Syncing filesystems ... done.
[   38.114630] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   38.115912] OOM killer disabled.
[   38.115914] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) 
done.
[   38.122170] [ cut here ]
[   38.122212] WARNING: CPU: 0 PID: 1747 at 
drivers/gpu/drm/msm/disp/mdp5/mdp5_pipe.c:145 mdp5_pipe_release+0x90/0xc0
[   38.122215] Modules linked in:
[   38.12] CPU: 0 PID: 1747 Comm: sh Not tainted 
4.19.107-00515-g9d5e4d7a33ed-dirty #323
[   38.14] Hardware name: Square, Inc. T2 Devkit (DT)
[   38.18] pstate: 4005 (nZcv daif -PAN -UAO)
[   38.122230] pc : mdp5_pipe_release+0x90/0xc0
[   38.122233] lr : mdp5_pipe_release+0x90/0xc0
[   38.122235] sp : 0d13b7f0
[   38.122236] x29: 0d13b7f0 x28: 
[   38.122240] x27: 0002 x26: 800079adce00
[   38.122243] x25: 800079405200 x24: 
[   38.122246] x23: 80007a78cc08 x22: 80007b1cc018
[   38.122249] x21: 80007b1cc000 x20: 80007b317080
[   38.122252] x19: 80007a78ce80 x18: 0002
[   38.122255] x17:  x16: 
[   38.122258] x15: fff0 x14: 08c3fb48
[   38.122261] x13: 08cdac4a x12: 08c3f000
[   38.122264] x11:  x10: 08cda000
[   38.122267] x9 :  x8 : 08ce4a40
[   38.122269] x7 :  x6 : 39ea41a9
[   38.122272] x5 :  x4 : 
[   38.122275] x3 :  x2 : c7580c109cae4500
[   38.122278] x1 :  x0 : 0024
[   38.122281] Call trace:
[   38.122285]  mdp5_pipe_release+0x90/0xc0
[   38.122288]  mdp5_plane_atomic_check+0x2c0/0x448
[   38.122294]  drm_atomic_helper_check_planes+0xd0/0x208
[   38.122298]  drm_atomic_helper_check+0x38/0xa8
[   38.122302]  drm_atomic_check_only+0x3e8/0x630
[   38.122305]  drm_atomic_commit+0x18/0x58
[   38.122309]  __drm_atomic_helper_disable_all.isra.12+0x15c/0x1a8
[   38.122312]  drm_atomic_helper_suspend+0x80/0xf0
[   38.122316]  msm_pm_suspend+0x4c/0x70
[   38.122320]  dpm_run_callback.isra.6+0x20/0x68
[   38.122323]  __device_suspend+0x110/0x308
[   38.122326]  dpm_suspend+0x100/0x1f0
[   38.122329]  dpm_suspend_start+0x64/0x70
[   38.122334]  suspend_devices_and_enter+0x110/0x500
[   38.122336]  pm_suspend+0x268/0x2c0
[   38.122339]  state_store+0x88/0x110
[   38.122345]  kobj_attr_store+0x14/0x28
[   38.122352]  sysfs_kf_write+0x3c/0x50
[   38.122355]  kernfs_fop_write+0x118/0x1e0
[   38.122360]  __vfs_write+0x30/0x168
[   38.122363]  vfs_write+0xa4/0x1a8
[   38.122366]  ksys_write+0x64/0xe8
[   38.122368]  __arm64_sys_write+0x18/0x20
[   38.122374]  el0_svc_common+0x6c/0x178
[   38.122377]  el0_svc_compat_handler+0x1c/0x28
[   38.122381]  el0_svc_compat+0x8/0x18
[   38.122383] ---[ end trace 24145b7d8545345b ]---
[   38.491552] Disabling non-boot CPUs ...

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/drm_atomic_helper.c | 16 
 1 file changed, 16 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
b/drivers/gpu/drm/drm_atomic_helper.c
index 85d163f16801..024985a92156 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3140,6 +3140,7 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
struct drm_atomic_state *state;
struct drm_connector *conn;
struct drm_connector_list_iter conn_iter;
+   struct drm_private_obj *priv_obj;
struct drm_plane *plane;
struct drm_crtc *crtc;
int err = 0;
@@ -3184,6 +3185,16 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
}
drm_connector_list_iter_end(_iter);
 
+   drm_for_each_privobj(priv_obj, dev) {
+   struct drm_private_state *priv_state;
+
+   priv_state = drm_atomic_get_private_obj_state(state, priv_obj);
+   if (IS_ERR(priv_state)) {
+   err = PTR_ERR(priv_state);
+   goto free;
+   }
+   }
+
/* clear the acquire context so that it isn't accidentally reused */
state->acquire_ctx = NULL;
 
@@ -3278,6 +3289,8 @@ int drm_atomic_helper_commit_duplicated_state(struct 
drm_atomic_state *state,
struct drm_connector_state *new_conn_state;
struct drm_crtc *crtc;
struct drm_crtc

Re: [PATCH v1 1/3] drm/msm: Attach the IOMMU device during initialization

2020-05-23 Thread Shawn Guo
On Fri, May 22, 2020 at 04:03:14PM -0600, Jordan Crouse wrote:
> diff --git a/drivers/gpu/drm/msm/msm_gpummu.c 
> b/drivers/gpu/drm/msm/msm_gpummu.c
> index 34980d8eb7ad..0ad0f848560a 100644
> --- a/drivers/gpu/drm/msm/msm_gpummu.c
> +++ b/drivers/gpu/drm/msm/msm_gpummu.c
> @@ -21,11 +21,6 @@ struct msm_gpummu {
>  #define GPUMMU_PAGE_SIZE SZ_4K
>  #define TABLE_SIZE (sizeof(uint32_t) * GPUMMU_VA_RANGE / GPUMMU_PAGE_SIZE)
>  
> -static int msm_gpummu_attach(struct msm_mmu *mmu)
> -{
> - return 0;
> -}
> -
>  static void msm_gpummu_detach(struct msm_mmu *mmu)
>  {
>  }
> @@ -85,7 +80,6 @@ static void msm_gpummu_destroy(struct msm_mmu *mmu)
>  }
>  
>  static const struct msm_mmu_funcs funcs = {
> - .attach = msm_gpummu_attach,
>   .detach = msm_gpummu_detach,
>   .map = msm_gpummu_map,
>   .unmap = msm_gpummu_unmap,
> diff --git a/drivers/gpu/drm/msm/msm_iommu.c b/drivers/gpu/drm/msm/msm_iommu.c
> index ad58cfe5998e..e35dab5792cf 100644
> --- a/drivers/gpu/drm/msm/msm_iommu.c
> +++ b/drivers/gpu/drm/msm/msm_iommu.c
> @@ -66,7 +66,6 @@ static void msm_iommu_destroy(struct msm_mmu *mmu)
>  }
>  
>  static const struct msm_mmu_funcs funcs = {
> - .attach = msm_iommu_attach,

It causes an unused function warning as below.

drivers/gpu/drm/msm/msm_iommu.c:26:12: warning: ‘msm_iommu_attach’ defined but 
not used [-Wunused-function]
 static int msm_iommu_attach(struct msm_mmu *mmu)
^~~~

Not sure if you will use it again in future patches though.

Shawn

>   .detach = msm_iommu_detach,
>   .map = msm_iommu_map,
>   .unmap = msm_iommu_unmap,
> @@ -76,6 +75,7 @@ static const struct msm_mmu_funcs funcs = {
>  struct msm_mmu *msm_iommu_new(struct device *dev, struct iommu_domain 
> *domain)
>  {
>   struct msm_iommu *iommu;
> + int ret;
>  
>   iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
>   if (!iommu)
> @@ -85,5 +85,11 @@ struct msm_mmu *msm_iommu_new(struct device *dev, struct 
> iommu_domain *domain)
>   msm_mmu_init(>base, dev, );
>   iommu_set_fault_handler(domain, msm_fault_handler, iommu);
>  
> + ret = iommu_attach_device(iommu->domain, dev);
> + if (ret) {
> + kfree(iommu);
> + return ERR_PTR(ret);
> + }
> +
>   return >base;
>  }
> diff --git a/drivers/gpu/drm/msm/msm_mmu.h b/drivers/gpu/drm/msm/msm_mmu.h
> index 67a623f14319..bae9e8e67ec1 100644
> --- a/drivers/gpu/drm/msm/msm_mmu.h
> +++ b/drivers/gpu/drm/msm/msm_mmu.h
> @@ -10,7 +10,6 @@
>  #include 
>  
>  struct msm_mmu_funcs {
> - int (*attach)(struct msm_mmu *mmu);
>   void (*detach)(struct msm_mmu *mmu);
>   int (*map)(struct msm_mmu *mmu, uint64_t iova, struct sg_table *sgt,
>   unsigned len, int prot);
> -- 
> 2.17.1
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v1 0/3] drm/msm: Cleanups ahead of per-instance pagetables

2020-05-23 Thread Shawn Guo
On Fri, May 22, 2020 at 04:03:13PM -0600, Jordan Crouse wrote:
> These are three cleanup and reorganization patches that were originally
> part of one of my many per-instance pagetable stacks [1] [2] but make life
> better in general and can stand on their own. Send them now to get them
> out of my other stack and make that processs ever so easier.
> 
> [1] https://patchwork.kernel.org/patch/11355255/
> [2] https://patchwork.kernel.org/patch/11355259/
> 
> Jordan Crouse (3):
>   drm/msm: Attach the IOMMU device during initialization
>   drm/msm: Refactor address space initialization
>   drm/msm: Update the MMU helper function APIs

FWIW, on A405 with glmark2:

Tested-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 2/4] ARM: dts: ims53: Group port definitions for the dvi-converter

2020-05-19 Thread Shawn Guo
On Thu, May 14, 2020 at 04:36:10PM +0200, Ricardo Cañuelo wrote:
> Group the port definitions of the dvi-converter in a 'ports' node to
> make it compliant with the ti,tfp410 binding.
> 
> Signed-off-by: Ricardo Cañuelo 

s/ims53/imx53-cx9020 in subject.

I fixed it up and applied the patch.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/zte: remove unneeded semicolon

2020-05-19 Thread Shawn Guo
On Mon, May 04, 2020 at 07:32:30PM +0800, Jason Yan wrote:
> Fix the following coccicheck warning:
> 
> drivers/gpu/drm/zte/zx_vga.c:158:2-3: Unneeded semicolon
> drivers/gpu/drm/zte/zx_vga.c:171:2-3: Unneeded semicolon
> drivers/gpu/drm/zte/zx_vga.c:179:2-3: Unneeded semicolon
> 
> Signed-off-by: Jason Yan 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [Freedreno] [v2 PATCH] drivers: gpu: drm: Add MDP5 configuration for MSM8x36.

2020-05-09 Thread Shawn Guo
On Sat, May 09, 2020 at 12:48:10PM +0200, Konrad Dybcio wrote:
> This change adds MDP5 configuration for MSM8x36-based SoCs,
> like MSM8936, 8939 and their APQ variants.
> The configuration is based on MSM8916's, but adds some notable
> features, like ad and pp blocks, along with some register
> changes.
> 
> changes since v1:
> - add an ad block
> - add a second mixer @ 0x47000
> - adjust .max_width
> - write a more descriptive commit message
> 
> Signed-off-by: Konrad Dybcio 

Subject prefix "drm/msm/mdp5: " seems to be more idiomatic as per
git log of file/folder changed here.  Other than that:

Reviewed-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 2/2] drm/msm/a4xx: add a405_registers for a405 device

2020-05-09 Thread Shawn Guo
A405 device has a different set of registers than a4xx_registers.  It
has no VMIDMT or XPU registers, and VBIF registers are different.  Let's
add a405_registers for a405 device.

As adreno_is_a405() works only after adreno_gpu_init() gets called, the
assignments get moved down after adreno_gpu_init().

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 53 +--
 1 file changed, 50 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/a4xx_gpu.c 
b/drivers/gpu/drm/msm/adreno/a4xx_gpu.c
index 70de59751188..9e244982974e 100644
--- a/drivers/gpu/drm/msm/adreno/a4xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a4xx_gpu.c
@@ -445,6 +445,52 @@ static const unsigned int a4xx_registers[] = {
~0 /* sentinel */
 };
 
+static const unsigned int a405_registers[] = {
+   /* RBBM */
+   0x, 0x0002, 0x0004, 0x0021, 0x0023, 0x0024, 0x0026, 0x0026,
+   0x0028, 0x002B, 0x002E, 0x0034, 0x0037, 0x0044, 0x0047, 0x0066,
+   0x0068, 0x0095, 0x009C, 0x0170, 0x0174, 0x01AF,
+   /* CP */
+   0x0200, 0x0233, 0x0240, 0x0250, 0x04C0, 0x04DD, 0x0500, 0x050B,
+   0x0578, 0x058F,
+   /* VSC */
+   0x0C00, 0x0C03, 0x0C08, 0x0C41, 0x0C50, 0x0C51,
+   /* GRAS */
+   0x0C80, 0x0C81, 0x0C88, 0x0C8F,
+   /* RB */
+   0x0CC0, 0x0CC0, 0x0CC4, 0x0CD2,
+   /* PC */
+   0x0D00, 0x0D0C, 0x0D10, 0x0D17, 0x0D20, 0x0D23,
+   /* VFD */
+   0x0E40, 0x0E4A,
+   /* VPC */
+   0x0E60, 0x0E61, 0x0E63, 0x0E68,
+   /* UCHE */
+   0x0E80, 0x0E84, 0x0E88, 0x0E95,
+   /* GRAS CTX 0 */
+   0x2000, 0x2004, 0x2008, 0x2067, 0x2070, 0x2078, 0x207B, 0x216E,
+   /* PC CTX 0 */
+   0x21C0, 0x21C6, 0x21D0, 0x21D0, 0x21D9, 0x21D9, 0x21E5, 0x21E7,
+   /* VFD CTX 0 */
+   0x2200, 0x2204, 0x2208, 0x22A9,
+   /* GRAS CTX 1 */
+   0x2400, 0x2404, 0x2408, 0x2467, 0x2470, 0x2478, 0x247B, 0x256E,
+   /* PC CTX 1 */
+   0x25C0, 0x25C6, 0x25D0, 0x25D0, 0x25D9, 0x25D9, 0x25E5, 0x25E7,
+   /* VFD CTX 1 */
+   0x2600, 0x2604, 0x2608, 0x26A9,
+   /* VBIF version 0x2005*/
+   0x3000, 0x3007, 0x302C, 0x302C, 0x3030, 0x3030, 0x3034, 0x3036,
+   0x3038, 0x3038, 0x303C, 0x303D, 0x3040, 0x3040, 0x3049, 0x3049,
+   0x3058, 0x3058, 0x305B, 0x3061, 0x3064, 0x3068, 0x306C, 0x306D,
+   0x3080, 0x3088, 0x308B, 0x308C, 0x3090, 0x3094, 0x3098, 0x3098,
+   0x309C, 0x309C, 0x30C0, 0x30C0, 0x30C8, 0x30C8, 0x30D0, 0x30D0,
+   0x30D8, 0x30D8, 0x30E0, 0x30E0, 0x3100, 0x3100, 0x3108, 0x3108,
+   0x3110, 0x3110, 0x3118, 0x3118, 0x3120, 0x3120, 0x3124, 0x3125,
+   0x3129, 0x3129, 0x340C, 0x340C, 0x3410, 0x3410,
+   ~0 /* sentinel */
+};
+
 static struct msm_gpu_state *a4xx_gpu_state_get(struct msm_gpu *gpu)
 {
struct msm_gpu_state *state = kzalloc(sizeof(*state), GFP_KERNEL);
@@ -568,13 +614,14 @@ struct msm_gpu *a4xx_gpu_init(struct drm_device *dev)
gpu->perfcntrs = NULL;
gpu->num_perfcntrs = 0;
 
-   adreno_gpu->registers = a4xx_registers;
-   adreno_gpu->reg_offsets = a4xx_register_offsets;
-
ret = adreno_gpu_init(dev, pdev, adreno_gpu, , 1);
if (ret)
goto fail;
 
+   adreno_gpu->registers = adreno_is_a405(adreno_gpu) ? a405_registers :
+a4xx_registers;
+   adreno_gpu->reg_offsets = a4xx_register_offsets;
+
/* if needed, allocate gmem: */
if (adreno_is_a4xx(adreno_gpu)) {
ret = adreno_gpu_ocmem_init(dev->dev, adreno_gpu,
-- 
2.17.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 1/2] drm/msm/a4xx: add adreno a405 support

2020-05-09 Thread Shawn Guo
It adds support for adreno a405 found on MSM8939.  The adreno_is_a430()
check in adreno_submit() needs an extension to cover a405.  The
downstream driver suggests it should cover the whole a4xx generation.
That's why it gets changed to adreno_is_a4xx(), while a420 is not
tested though.

Signed-off-by: Shawn Guo 
---
 drivers/gpu/drm/msm/adreno/a4xx_gpu.c  | 29 +-
 drivers/gpu/drm/msm/adreno/adreno_device.c | 11 
 drivers/gpu/drm/msm/adreno/adreno_gpu.c|  2 +-
 drivers/gpu/drm/msm/adreno/adreno_gpu.h|  5 
 4 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/msm/adreno/a4xx_gpu.c 
b/drivers/gpu/drm/msm/adreno/a4xx_gpu.c
index 253d8d85daad..70de59751188 100644
--- a/drivers/gpu/drm/msm/adreno/a4xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a4xx_gpu.c
@@ -66,19 +66,22 @@ static void a4xx_enable_hwcg(struct msm_gpu *gpu)
}
}
 
-   for (i = 0; i < 4; i++) {
-   gpu_write(gpu, REG_A4XX_RBBM_CLOCK_CTL_MARB_CCU(i),
-   0x0922);
-   }
+   /* No CCU for A405 */
+   if (!adreno_is_a405(adreno_gpu)) {
+   for (i = 0; i < 4; i++) {
+   gpu_write(gpu, REG_A4XX_RBBM_CLOCK_CTL_MARB_CCU(i),
+   0x0922);
+   }
 
-   for (i = 0; i < 4; i++) {
-   gpu_write(gpu, REG_A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU(i),
-   0x);
-   }
+   for (i = 0; i < 4; i++) {
+   gpu_write(gpu, REG_A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU(i),
+   0x);
+   }
 
-   for (i = 0; i < 4; i++) {
-   gpu_write(gpu, REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1(i),
-   0x0001);
+   for (i = 0; i < 4; i++) {
+   gpu_write(gpu, 
REG_A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1(i),
+   0x0001);
+   }
}
 
gpu_write(gpu, REG_A4XX_RBBM_CLOCK_MODE_GPC, 0x0222);
@@ -137,7 +140,9 @@ static int a4xx_hw_init(struct msm_gpu *gpu)
uint32_t *ptr, len;
int i, ret;
 
-   if (adreno_is_a420(adreno_gpu)) {
+   if (adreno_is_a405(adreno_gpu)) {
+   gpu_write(gpu, REG_A4XX_VBIF_ROUND_ROBIN_QOS_ARB, 0x0003);
+   } else if (adreno_is_a420(adreno_gpu)) {
gpu_write(gpu, REG_A4XX_VBIF_ABIT_SORT, 0x0001001F);
gpu_write(gpu, REG_A4XX_VBIF_ABIT_SORT_CONF, 0x00A4);
gpu_write(gpu, REG_A4XX_VBIF_GATE_OFF_WRREQ_EN, 0x0001);
diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c 
b/drivers/gpu/drm/msm/adreno/adreno_device.c
index cb3a6e597d76..b69757383965 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_device.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_device.c
@@ -92,6 +92,17 @@ static const struct adreno_info gpulist[] = {
.gmem  = SZ_1M,
.inactive_period = DRM_MSM_INACTIVE_PERIOD,
.init  = a3xx_gpu_init,
+   }, {
+   .rev   = ADRENO_REV(4, 0, 5, ANY_ID),
+   .revn  = 405,
+   .name  = "A405",
+   .fw = {
+   [ADRENO_FW_PM4] = "a420_pm4.fw",
+   [ADRENO_FW_PFP] = "a420_pfp.fw",
+   },
+   .gmem  = SZ_256K,
+   .inactive_period = DRM_MSM_INACTIVE_PERIOD,
+   .init  = a4xx_gpu_init,
}, {
.rev   = ADRENO_REV(4, 2, 0, ANY_ID),
.revn  = 420,
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c 
b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index 1d5c43c22269..3ddbf507941c 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -459,7 +459,7 @@ void adreno_submit(struct msm_gpu *gpu, struct 
msm_gem_submit *submit,
break;
/* fall-thru */
case MSM_SUBMIT_CMD_BUF:
-   OUT_PKT3(ring, adreno_is_a430(adreno_gpu) ?
+   OUT_PKT3(ring, adreno_is_a4xx(adreno_gpu) ?
CP_INDIRECT_BUFFER_PFE : 
CP_INDIRECT_BUFFER_PFD, 2);
OUT_RING(ring, lower_32_bits(submit->cmd[i].iova));
OUT_RING(ring, submit->cmd[i].size);
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h 
b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
index 9ff4e550e7bd..35f744834ea9 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h
@@ -202,6 +202,11 @@ static inline bool adreno_is_a4xx(struct adreno_gpu *gpu)
return (gpu->revn >= 400) && (gpu->revn < 500);
 }
 
+static inline int adreno_is_a405(struct adreno_gpu *gpu)
+{
+   return gpu->revn == 405;
+}
+
 static inline 

[PATCH 0/2] Add adreno a405 GPU support

2020-05-09 Thread Shawn Guo
The series adds support for adreno a405 found on MSM8936/MSM8939 and APQ
variants.

Shawn Guo (2):
  drm/msm/a4xx: add adreno a405 support
  drm/msm/a4xx: add a405_registers for a405 device

 drivers/gpu/drm/msm/adreno/a4xx_gpu.c  | 82 ++
 drivers/gpu/drm/msm/adreno/adreno_device.c | 11 +++
 drivers/gpu/drm/msm/adreno/adreno_gpu.c|  2 +-
 drivers/gpu/drm/msm/adreno/adreno_gpu.h|  5 ++
 4 files changed, 84 insertions(+), 16 deletions(-)

-- 
2.17.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drivers: gpu: drm: Add MDP5 configuration for MSM8x36 and its derivatives, such as MSM8939.

2020-05-08 Thread Shawn Guo
Hi Konrad,

On Fri, May 01, 2020 at 10:51:59PM +0200, Konrad Dybcio wrote:
> Signed-off-by: Konrad Dybcio 

Please write up some commit log.  Since this is based on msm8x16_config,
maybe document the differences from it in commit log?

> ---
>  drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 70 
>  1 file changed, 70 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c 
> b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
> index e3c4c250238b7..1c7de7d6870cf 100644
> --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
> +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
> @@ -342,6 +342,75 @@ static const struct mdp5_cfg_hw msm8x16_config = {
>   .max_clk = 32000,
>  };
>  
> +static const struct mdp5_cfg_hw msm8x36_config = {
> + .name = "msm8x36",
> + .mdp = {
> + .count = 1,
> + .base = { 0x0 },
> + .caps = MDP_CAP_SMP |
> + 0,
> + },
> + .smp = {
> + .mmb_count = 8,
> + .mmb_size = 10240,
> + .clients = {
> + [SSPP_VIG0] = 1, [SSPP_DMA0] = 4,
> + [SSPP_RGB0] = 7, [SSPP_RGB1] = 8,
> + },
> + },
> + .ctl = {
> + .count = 3,
> + .base = { 0x01000, 0x01200, 0x01400 },
> + .flush_hw_mask = 0x4003,
> + },
> + .pipe_vig = {
> + .count = 1,
> + .base = { 0x04000 },
> + .caps = MDP_PIPE_CAP_HFLIP | MDP_PIPE_CAP_VFLIP |
> + MDP_PIPE_CAP_SCALE | MDP_PIPE_CAP_CSC |
> + MDP_PIPE_CAP_DECIMATION,
> + },
> + .pipe_rgb = {
> + .count = 2,
> + .base = { 0x14000, 0x16000 },
> + .caps = MDP_PIPE_CAP_HFLIP | MDP_PIPE_CAP_VFLIP |
> + MDP_PIPE_CAP_DECIMATION,
> + },
> + .pipe_dma = {
> + .count = 1,
> + .base = { 0x24000 },
> + .caps = MDP_PIPE_CAP_HFLIP | MDP_PIPE_CAP_VFLIP,
> + },
> + .lm = {
> + .count = 1,

>From what I read on downstream 3.10 kernel, there should be two mixers
just like msm8x16.

qcom,mdss-mixer-intf-off = <0x00045000>;
qcom,mdss-mixer-wb-off = <0x00048000>;

> + .base = { 0x44000 },
> + .instances = {
> + { .id = 0, .pp = 0, .dspp = 0,
> +   .caps = MDP_LM_CAP_DISPLAY, },
> + },
> + .nb_stages = 8,
> + .max_width = 2048,

It should probably be 2560 from downstream below.

qcom,max-mixer-width = <2560>;

> + .max_height = 0x,
> + },
> + .pp = {
> + .count = 1,
> + .base = { 0x7 },
> + },
> +

For consistency, we may want to drop this newline.  And it looks like
there is a .ad block on msm8x36.

qcom,mdss-ad-off = <0x0079000>;

> + .dspp = {
> + .count = 1,
> + .base = { 0x54000 },
> + },
> + .intf = {
> + .base = { 0x0, 0x6a800, 0x6b000 },
> + .connect = {
> + [0] = INTF_DISABLED,
> + [1] = INTF_DSI,
> + [2] = INTF_DSI,
> + },
> + },
> + .max_clk = 36667,
> +};

Need a newline here.

Shawn

>  static const struct mdp5_cfg_hw msm8x94_config = {
>   .name = "msm8x94",
>   .mdp = {
> @@ -840,6 +909,7 @@ static const struct mdp5_cfg_handler cfg_handlers_v1[] = {
>   { .revision = 2, .config = { .hw = _config } },
>   { .revision = 3, .config = { .hw = _config } },
>   { .revision = 6, .config = { .hw = _config } },
> + { .revision = 8, .config = { .hw = _config } },
>   { .revision = 9, .config = { .hw = _config } },
>   { .revision = 7, .config = { .hw = _config } },
>   { .revision = 11, .config = { .hw = _config } },
> -- 
> 2.26.1
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] backlight: l4f00242t03: Convert to GPIO descriptors

2020-04-28 Thread Shawn Guo
On Wed, Apr 15, 2020 at 02:14:49PM +0200, Linus Walleij wrote:
> This converts the l4f00242t03 backlight driver to use GPIO
> descriptors and switches the two Freescale i.MX boards over
> to passing descriptors instead of global GPIO numbers.
> 
> We use the typical names "enable" and "reset" as found in
> the device tree bindings for panel GPIOs.
> 
> This saves a lot of code in the driver and makes it possible
> to get rid of the platform data header altogether.
> 
> Cc: Sascha Hauer 
> Cc: Anson Huang 
> Cc: Shawn Guo 
> Cc: Pengutronix Kernel Team 
> Cc: Fabio Estevam 
> Cc: NXP Linux Team 
> Cc: Alberto Panizzo 
> Signed-off-by: Linus Walleij 
> ---
> i.MX folks: please test if you can or at least ACK so Lee
> knows if this is OK for you.

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 07/11] dts: arm64: layerscape: add dma-ranges property to qoric-mc node

2019-10-14 Thread Shawn Guo
On Mon, Oct 14, 2019 at 12:00:25PM +0200, Nicolas Saenz Julienne wrote:
> On Mon, 2019-10-14 at 16:28 +0800, Shawn Guo wrote:
> > On Tue, Sep 24, 2019 at 08:12:38PM +0200, Nicolas Saenz Julienne wrote:
> > > qoriq-mc's dpmacs DMA configuration is inherited from their parent node,
> > > which acts a bus in this regard. So far it maked all devices as
> > > dma-coherent but no dma-ranges recommendation is made.
> > > 
> > > The truth is that the underlying interconnect has DMA constraints, so
> > > add an empty dma-ranges in qoriq-mc's node in order for DT's DMA
> > > configuration code to get the DMA constraints from it.
> > > 
> > > Signed-off-by: Nicolas Saenz Julienne 
> > 
> > Updated subject prefix as 'arm64: dts: ...', and applied the patch.
> 
> Hi Shawn,
> these two patches are no longer needed. This series has been superseded by 
> this
> patch[1] 951d48855d ('of: Make of_dma_get_range() work on bus nodes', 
> available
> in linux-next) which fixed the issue directly in OF code.
> 
> Sorry for the noise.

Okay, thanks for letting me know.  Dropped them.

Shawn


Re: [PATCH 08/11] dts: arm64: layerscape: add dma-ranges property to pcie nodes

2019-10-14 Thread Shawn Guo
On Tue, Sep 24, 2019 at 08:12:39PM +0200, Nicolas Saenz Julienne wrote:
> The bus behind the board's PCIe core has DMA addressing limitations. Add
> an empty 'dma-ranges' property on all PCIe bus descriptions to inform
> the OF core that a translation is due further down the line.
> 
> Signed-off-by: Nicolas Saenz Julienne 

Applied, thanks.


Re: [PATCH 07/11] dts: arm64: layerscape: add dma-ranges property to qoric-mc node

2019-10-14 Thread Shawn Guo
On Tue, Sep 24, 2019 at 08:12:38PM +0200, Nicolas Saenz Julienne wrote:
> qoriq-mc's dpmacs DMA configuration is inherited from their parent node,
> which acts a bus in this regard. So far it maked all devices as
> dma-coherent but no dma-ranges recommendation is made.
> 
> The truth is that the underlying interconnect has DMA constraints, so
> add an empty dma-ranges in qoriq-mc's node in order for DT's DMA
> configuration code to get the DMA constraints from it.
> 
> Signed-off-by: Nicolas Saenz Julienne 

Updated subject prefix as 'arm64: dts: ...', and applied the patch.

Shawn

> ---
> 
>  arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 1 +
>  arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 1 +
>  arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 1 +
>  3 files changed, 3 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi 
> b/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
> index c676d0771762..f0d0b6145b72 100644
> --- a/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
> @@ -698,6 +698,7 @@
> <0x 0x0834 0 0x4>; /* MC control 
> reg */
>   msi-parent = <>;
>   iommu-map = <0  0 0>;  /* This is fixed-up by 
> u-boot */
> + dma-ranges;
>   dma-coherent;
>   #address-cells = <3>;
>   #size-cells = <1>;
> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi 
> b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
> index 7a0be8eaa84a..fd6036b7865c 100644
> --- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
> @@ -340,6 +340,7 @@
> <0x 0x0834 0 0x4>; /* MC control 
> reg */
>   msi-parent = <>;
>   iommu-map = <0  0 0>;  /* This is fixed-up by 
> u-boot */
> + dma-ranges;
>   dma-coherent;
>   #address-cells = <3>;
>   #size-cells = <1>;
> diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi 
> b/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
> index 408e0ecdce6a..3735bb139cb2 100644
> --- a/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
> +++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
> @@ -868,6 +868,7 @@
>   msi-parent = <>;
>   /* iommu-map property is fixed up by u-boot */
>   iommu-map = <0  0 0>;
> + dma-ranges;
>   dma-coherent;
>   #address-cells = <3>;
>   #size-cells = <1>;
> -- 
> 2.23.0
> 


Re: [PATCH v2 1/2] dts: arm64: imx8mq: Enable gpu passive throttling

2019-10-06 Thread Shawn Guo
On Wed, Sep 11, 2019 at 07:40:35PM -0700, Guido Günther wrote:
> Temperature and hysteresis were picked after the CPU.
> 
> Signed-off-by: Guido Günther 

The patch prefix should be 'arm64: dts: ...'

I fixed it up and applied the patch.

Shawn

> ---
>  arch/arm64/boot/dts/freescale/imx8mq.dtsi | 15 +++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi 
> b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
> index 4fdd60f2c51e..5023a0e5068d 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
> @@ -235,12 +235,26 @@
>   thermal-sensors = < 1>;
>  
>   trips {
> + gpu_alert: gpu-alert {
> + temperature = <8>;
> + hysteresis = <2000>;
> + type = "passive";
> + };
> +
>   gpu-crit {
>   temperature = <9>;
>   hysteresis = <2000>;
>   type = "critical";
>   };
>   };
> +
> + cooling-maps {
> + map0 {
> + trip = <_alert>;
> + cooling-device =
> + < THERMAL_NO_LIMIT 
> THERMAL_NO_LIMIT>;
> + };
> + };
>   };
>  
>   vpu-thermal {
> @@ -912,6 +926,7 @@
>< IMX8MQ_CLK_GPU_AXI>,
>< IMX8MQ_CLK_GPU_AHB>;
>   clock-names = "core", "shader", "bus", "reg";
> + #cooling-cells = <2>;
>   assigned-clocks = < IMX8MQ_CLK_GPU_CORE_SRC>,
> < IMX8MQ_CLK_GPU_SHADER_SRC>,
> < IMX8MQ_CLK_GPU_AXI>,
> -- 
> 2.23.0.rc1
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v2 2/2] dt-bindings: etnaviv: Add #cooling-cells

2019-10-06 Thread Shawn Guo
On Mon, Sep 16, 2019 at 04:32:55PM +0200, Lucas Stach wrote:
> On Mi, 2019-09-11 at 19:40 -0700, Guido Günther wrote:
> > Add #cooling-cells for when the gpu acts as a cooling device.
> > 
> > Signed-off-by: Guido Günther 
> 
> Reviewed-by: Lucas Stach 

Lucas,

I assume you will pick it up.

Shawn

> 
> > ---
> >  .../devicetree/bindings/display/etnaviv/etnaviv-drm.txt  | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git 
> > a/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt 
> > b/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
> > index 8def11b16a24..640592e8ab2e 100644
> > --- a/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
> > +++ b/Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
> > @@ -21,6 +21,7 @@ Required properties:
> >  Optional properties:
> >  - power-domains: a power domain consumer specifier according to
> >Documentation/devicetree/bindings/power/power_domain.txt
> > +- #cooling-cells: : If used as a cooling device, must be <2>
> >  
> >  example:
> >  
> 


Re: [PATCH v4 13/23] drm: zte: Provide ddc symlink in vga connector sysfs directory

2019-07-23 Thread Shawn Guo
On Thu, Jul 11, 2019 at 01:26:40PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v4 12/23] drm: zte: Provide ddc symlink in hdmi connector sysfs directory

2019-07-22 Thread Shawn Guo
On Thu, Jul 11, 2019 at 01:26:39PM +0200, Andrzej Pietrasiewicz wrote:
> Use the ddc pointer provided by the generic connector.
> 
> Signed-off-by: Andrzej Pietrasiewicz 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v1 10/33] drm/zte: drop use of drmP.h

2019-07-18 Thread Shawn Guo
On Sun, Jun 30, 2019 at 08:18:59AM +0200, Sam Ravnborg wrote:
> Drop use of the deprecated drmP.h header file.
> Fix fallout.
> 
> Signed-off-by: Sam Ravnborg 
> Cc: Shawn Guo 
> Cc: David Airlie 
> Cc: Daniel Vetter 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH 39/59] drm/zte: Drop drm_gem_prime_export/import

2019-06-18 Thread Shawn Guo
On Fri, Jun 14, 2019 at 10:35:55PM +0200, Daniel Vetter wrote:
> They're the default.
> 
> Aside: Would be really nice to switch the others over to
> drm_gem_object_funcs.
> 
> Signed-off-by: Daniel Vetter 
> Cc: Shawn Guo 

Acked-by: Shawn Guo 

> ---
>  drivers/gpu/drm/zte/zx_drm_drv.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c 
> b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 060ad5266bc7..ef019cad7e81 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -44,8 +44,6 @@ static struct drm_driver zx_drm_driver = {
>   .dumb_create = drm_gem_cma_dumb_create,
>   .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
>   .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
> - .gem_prime_export = drm_gem_prime_export,
> - .gem_prime_import = drm_gem_prime_import,
>   .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
>   .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
>   .gem_prime_vmap = drm_gem_cma_prime_vmap,
> -- 
> 2.20.1
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [EXT] Re: [PATCH 0/2] drm: imx: Add NWL MIPI DSI host controller support

2019-05-28 Thread Shawn Guo
Hi Laurentiu,

On Tue, May 28, 2019 at 07:03:54AM +, Laurentiu Palcu wrote:
> Hi Shawn, Lucas,
> 
> On Tue, May 28, 2019 at 09:38:02AM +0800, Shawn Guo wrote:
> > Caution: EXT Email
> > 
> > Hi Lucas,
> > 
> > On Mon, May 27, 2019 at 03:36:53PM +0200, Lucas Stach wrote:
> > > We have been looking at how to support DCSS in mainline for a while,
> > > but most of the actual work got pushed behind in schedule due to other
> > > priorities.
> > 
> > I have some time to contribute.  Would you suggest how I should help
> > here?
> > 
> > 1. You guys already have something close to completion and do not need
> >more hands.
> > 2. You guys already have some preliminary code and can use help from
> >others.
> > 3. You guys haven't got anything to start with, but just some design
> >principles that anyone who wants to work on it should consider.
> > 
> > Which is the one that you want me to read?
> 
> We're already working on clearing up the DCSS code and preparing it for
> upstreaming. It should be done in the following weeks.

Great!  I will stay away from this then :)

> The reason we've
> been delaying this is because neither HDMI nor MIPI support was present
> and, until these are upstream, testing DCSS would be quite impossible.

Well, they have to be done one by one, and I guess DCSS should be the
first one.  I think it's fine to test DCSS with out-of-tree HDMI or
MIPI driver which is not ready for submission yet.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH 0/2] drm: imx: Add NWL MIPI DSI host controller support

2019-05-27 Thread Shawn Guo
Hi Lucas,

On Mon, May 27, 2019 at 03:36:53PM +0200, Lucas Stach wrote:
> We have been looking at how to support DCSS in mainline for a while,
> but most of the actual work got pushed behind in schedule due to other
> priorities.

I have some time to contribute.  Would you suggest how I should help
here?

1. You guys already have something close to completion and do not need
   more hands.
2. You guys already have some preliminary code and can use help from
   others.
3. You guys haven't got anything to start with, but just some design
   principles that anyone who wants to work on it should consider.

Which is the one that you want me to read?

> One thing I can can say for certain is that DCSS should not be
> integrated into imx-drm. It's a totally different hardware and
> downstream clearly shows that it's not a good idea to cram it into imx-
> drm.

I haven't gone deeper into the vendor code, but from a brief looking I
didn't see so many problems with integrating DCSS into imx-drm.  It's
not so unreasonable to take imx-drm as an imx-display-subsystem which
can have multiple CRTCs.  So can you please elaborate a bit on why it's
really a bad idea?

> Also the artificial split between hardware control in
> drivers/gpu/imx/dcss and the DRM driver is just cargo-cult from the
> IPU/imx-drm split. For the IPU we did it as the IPU has legs in both
> DRM for the output parts and V4L2 for the input parts. As the DCSS has
> no video input capabilities the driver could be simplified a lot by
> moving it all into a single DRM driver.

Agreed on this.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH 0/2] drm: imx: Add NWL MIPI DSI host controller support

2019-05-26 Thread Shawn Guo
On Wed, May 08, 2019 at 07:18:27PM +0200, Guido Günther wrote:
> If somebody is working on DCSS support it'd be cool to know since this

I have some time slots here and will start looking at it, if no one else
is already working on it.

Shawn

> driver is currently a component of imx-display-subsystem which will only
> work out if dcss is handled like this as well.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH] ARM: imx_v6_v7_defconfig: Enable CONFIG_PWM_IMX27

2019-03-21 Thread Shawn Guo
On Thu, Mar 21, 2019 at 10:49:03AM +0100, Uwe Kleine-König wrote:
> Hello,
> 
> On Wed, Mar 20, 2019 at 01:01:26PM +, Leonard Crestez wrote:
> > Commit d80f8206905c ("pwm: imx: Split into two drivers") also adds a new
> > CONFIG_PWM_IMX27 for the PWM block on recent IMX chips and we should
> > enable it by default for imx.
> > 
> > Restoring the PWM driver fixes an infinite probe loop in 5.1-rc1 on
> > various imx6qdl-sabresd boards.
> > 
> > Signed-off-by: Leonard Crestez 
> > Reported-by: Abel Vesa 
> 
> This is prior art:
> 
> https://patchwork.ozlabs.org/project/linux-pwm/list/?series=85452=%2A=both
> 
> unfortunately this didn't get an Ack by Shawn and Thierry (added to
> recipients) marked it as "Not Applicable".
> 
> Given that the driver change is in Linus Torvald's tree now (since
> v5.1-rc1~38) it doesn't matter much via which tree this goes in and
> Shawn's tree is the easier now.
> 
> @Shawn: Would you please apply my patches? If you don't have them any
> more, I can bounce them to you. See

Yeah, just applied.  Sorry for being sluggish.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v1 0/4] ARM: dts: ccimx6ulsbcpro: Add 10" AUO/Goodix LVDS panel accessory kit

2018-12-04 Thread Shawn Guo
On Thu, Oct 25, 2018 at 05:09:29PM +0200, Alex Gonzalez wrote:
> Alex Gonzalez (4):
>   drm/panel: simple: Add AUO G101EVN010 panel support
>   ARM: dts: ccimx6ulsbcpro: Enable AUO G101EVN010 lcdif panel
>   ARM: imx_v6_v7_defconfig: Select TOUCHSCREEN_GOODIX
>   ARM: dts: ccimx6ulsbcpro: Add support for Goodix touch controller

Applied #2 ~ #4, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 3/9] drm: replace "drm_dev_unref" function with "drm_dev_put"

2018-11-19 Thread Shawn Guo
On Thu, Nov 15, 2018 at 11:16:23PM +0100, Fernando Ramos wrote:
> This patch unifies the naming of DRM functions for reference counting as
> requested on Documentation/gpu/todo.rst
> 
> Signed-off-by: Fernando Ramos 
> ---
>  drivers/gpu/drm/arc/arcpgu_drv.c | 4 ++--
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 4 ++--
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c| 4 ++--
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c| 4 ++--
>  drivers/gpu/drm/rcar-du/rcar_du_drv.c| 2 +-
>  drivers/gpu/drm/shmobile/shmob_drm_drv.c | 4 ++--
>  drivers/gpu/drm/tve200/tve200_drv.c  | 4 ++--
>  drivers/gpu/drm/zte/zx_drm_drv.c | 4 ++--

We have already queued a patch [1] from Thomas Zimmermann for
zx_drm_drv.

Shawn

[1] https://patchwork.kernel.org/patch/10615837/
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 3/4] PCI: imx: Add multi-pd support

2018-11-19 Thread Shawn Guo
On Fri, Nov 16, 2018 at 12:25:41PM +, Lorenzo Pieralisi wrote:
> On Mon, Oct 08, 2018 at 06:06:21PM +, Leonard Crestez wrote:
> > On some chips the PCIE and PCIE_PHY blocks are in separate power domains
> > which can be power-gated independently. The pci driver needs to handle
> > this by keeping both domain active.
> > 
> > This is intended for imx6sx where PCIE is in DISPLAY and PCIE_PHY in
> > it's own domain. Defining the DISPLAY domain requires a way for pcie to
> > keep it active or it will break when displays are off.
> > 
> > The power-domains on imx6sx are meant to look like this:
> > power-domains = <_disp>, <_pci>;
> > power-domain-names = "pcie", "pcie_phy";
> > 
> > Signed-off-by: Leonard Crestez 
> > Reviewed-by: Ulf Hansson 
> > ---
> >  drivers/pci/controller/dwc/pci-imx6.c | 48 +++
> >  1 file changed, 48 insertions(+)
> 
> I expect Shawn to pick the whole series up and therefore I am dropping
> this series from the PCI tree.

Lorenzo,

I think the best approach is that you send patch #2 and #3 for 4.21
through PCI tree, and we will be able to apply patch #4 in 4.22
development cycle.

Queuing patch #3 on IMX tree will stands a good chance for conflicts
with other pci-imx6.c changes on PCI tree.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v1 0/4] ARM: dts: ccimx6ulsbcpro: Add 10" AUO/Goodix LVDS panel accessory kit

2018-11-04 Thread Shawn Guo
On Thu, Oct 25, 2018 at 05:09:29PM +0200, Alex Gonzalez wrote:
> Alex Gonzalez (4):
>   drm/panel: simple: Add AUO G101EVN010 panel support
>   ARM: dts: ccimx6ulsbcpro: Enable AUO G101EVN010 lcdif panel
>   ARM: imx_v6_v7_defconfig: Select TOUCHSCREEN_GOODIX
>   ARM: dts: ccimx6ulsbcpro: Add support for Goodix touch controller

It looks good to me.  Ping me when the patch #1 gets accepted and I
will apply the test then.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 4/4] ARM: dts: imx6sx: Add DISPLAY power domain support

2018-11-03 Thread Shawn Guo
On Wed, Oct 31, 2018 at 12:17:50PM +, Leonard Crestez wrote:
> On 10/31/2018 8:12 AM, Shawn Guo wrote:
> > On Mon, Oct 08, 2018 at 06:06:23PM +, Leonard Crestez wrote:
> >> This was implemented in the driver but not actually defined and
> >> referenced in dts. This makes it always on.
> >>
> >>  From reference manual in section "10.4.1.4.1 Power Distribution":
> >>
> >> "Display domain - The DISPLAY domain contains GIS, CSI, PXP, LCDIF,
> >> PCIe, DCIC, and LDB. It is supplied by internal regulator."
> >>
> >> The current pd_pcie is actually only for PCIE_PHY, the PCIE ip block is
> >> actually inside the DISPLAY domain. Handle this by adding the pcie node
> >> in both power domains.
> >>
> >> Signed-off-by: Leonard Crestez 
> > 
> > Applied, thanks.
> 
> As mentioned in the cover letter this requires multi-PD support in 
> imx-pci to be implemented, specifically PATCH 3/4 of this series:
> 
>   https://lore.kernel.org/patchwork/patch/996810/
> 
> Unless that also gets merged soon via pci I expect issues in linux-next. 
> The patch already has reviewed-by tags so "merging it soon" is not 
> unreasonable.

Oops, I overlooked the notes in cover-letter.  Let's use the approach as
suggested there - applying the dts change after all driver dependencies
are landed.

Patch dropped, sorry.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 4/4] ARM: dts: imx6sx: Add DISPLAY power domain support

2018-10-31 Thread Shawn Guo
On Mon, Oct 08, 2018 at 06:06:23PM +, Leonard Crestez wrote:
> This was implemented in the driver but not actually defined and
> referenced in dts. This makes it always on.
> 
> From reference manual in section "10.4.1.4.1 Power Distribution":
> 
> "Display domain - The DISPLAY domain contains GIS, CSI, PXP, LCDIF,
> PCIe, DCIC, and LDB. It is supplied by internal regulator."
> 
> The current pd_pcie is actually only for PCIE_PHY, the PCIE ip block is
> actually inside the DISPLAY domain. Handle this by adding the pcie node
> in both power domains.
> 
> Signed-off-by: Leonard Crestez 

Applied, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 1/4] soc: imx: gpc: Increase GPC_CLK_MAX to 7

2018-10-31 Thread Shawn Guo
On Mon, Oct 08, 2018 at 06:06:19PM +, Leonard Crestez wrote:
> The DISPLAY power domain on imx6sx has 7 clocks.
> 
> Signed-off-by: Leonard Crestez 

Applied, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 2/3] PCI: imx: Add multi-pd support

2018-10-07 Thread Shawn Guo
On Mon, Oct 01, 2018 at 11:56:17PM +0300, Leonard Crestez wrote:
> On some chips the PCIE and PCIE_PHY blocks are in separate power domains
> which can be power-gated independently. The driver needs to handle this
> by keeping both domain active.
> 
> This is intended for imx6sx where PCIE is in DISPMIX and PCIE_PHY in
> it's own domain. Defining the DISPMIX domain requires a way for pcie to
> keep it active or it will break when displays are off.
> 
> The power-domains on imx6sx are meant to look like this:
>   power-domains = <_disp>, <_pci>;
>   power-domain-names = "pcie", "pcie_phy";
> 
> Signed-off-by: Leonard Crestez 
> Reviewed-by: Ulf Hansson 
> 
> ---
>  drivers/pci/controller/dwc/pci-imx6.c | 48 +++
>  1 file changed, 48 insertions(+)

Bindings document fsl,imx6q-pcie.txt should probably be updated for the
new power domain support.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 14/21] drm/zte: Use drm_atomic_helper_shutdown

2018-10-05 Thread Shawn Guo
On Thu, Oct 04, 2018 at 10:24:39PM +0200, Daniel Vetter wrote:
> drm_plane_helper_disable is a non-atomic drivers only function, and
> will blow up (since no one passes the locking context it needs).
> 
> Atomic drivers which want to quiescent their hw on unload should
> use drm_atomic_helper_shutdown() instead.
> 
> Reviewed-by: Ville Syrjälä 
> Signed-off-by: Daniel Vetter 
> Cc: Shawn Guo 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [RESEND PATCH] drm/zte: Replace drm_dev_unref with drm_dev_put

2018-09-30 Thread Shawn Guo
On Wed, Sep 26, 2018 at 02:06:50PM +0200, Thomas Zimmermann wrote:
> This patch unifies the naming of DRM functions for reference counting
> of struct drm_device. The resulting code is more aligned with the rest
> of the Linux kernel interfaces.
> 
> Signed-off-by: Thomas Zimmermann 
> Acked-by: Shawn Guo 

Pushed to drm-misc-next, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] gpu: do not double put device node in zx_drm_probe

2018-09-19 Thread Shawn Guo
On Tue, Sep 18, 2018 at 05:19:09PM +0200, Daniel Vetter wrote:
> On Mon, Aug 27, 2018 at 9:18 AM, Shawn Guo  wrote:
> > On Fri, Aug 17, 2018 at 10:24:06AM +0800, zhong jiang wrote:
> >> for_each_available_child_of_node will get and put the node properly,
> >> the following of_node_put will lead to the double put. So just
> >> remove it.
> >>
> >> Signed-off-by: zhong jiang 
> >
> > Acked-by: Shawn Guo 
> 
> Shawn, I'm assuming you'll push this to drm-misc-next? You're the
> maintainer with commit rights after all.

Just pushed to drm-misc-next.  Sorry for the delay.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 19/20] drm/zte: Use drm_fbdev_generic_setup()

2018-09-09 Thread Shawn Guo
On Sat, Sep 08, 2018 at 03:46:47PM +0200, Noralf Trønnes wrote:
> The CMA helper is already using the drm_fb_helper_generic_probe part of
> the generic fbdev emulation. This patch makes full use of the generic
> fbdev emulation by using its drm_client callbacks. This means that
> drm_mode_config_funcs->output_poll_changed and drm_driver->lastclose are
> now handled by the emulation code. Additionally fbdev unregister happens
> automatically on drm_dev_unregister().
> 
> The drm_fbdev_generic_setup() call is put after drm_dev_register() in the
> driver. This is done to highlight the fact that fbdev emulation is an
> internal client that makes use of the driver, it is not part of the
> driver as such. If fbdev setup fails, an error is printed, but the driver
> succeeds probing.
> 
> Cc: Shawn Guo 
> Signed-off-by: Noralf Trønnes 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] gpu: do not double put device node in zx_drm_probe

2018-08-27 Thread Shawn Guo
On Fri, Aug 17, 2018 at 10:24:06AM +0800, zhong jiang wrote:
> for_each_available_child_of_node will get and put the node properly,
> the following of_node_put will lead to the double put. So just
> remove it.
> 
> Signed-off-by: zhong jiang 

Acked-by: Shawn Guo 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/zte: Replace drm_dev_unref with drm_dev_put

2018-07-18 Thread Shawn Guo
On Tue, Jul 17, 2018 at 01:11:14PM +0200, Thomas Zimmermann wrote:
> This patch unifies the naming of DRM functions for reference counting
> of struct drm_device. The resulting code is more aligned with the rest
> of the Linux kernel interfaces.
> 
> Signed-off-by: Thomas Zimmermann 

Acked-by: Shawn Guo 

> ---
>  drivers/gpu/drm/zte/zx_drm_drv.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/zte/zx_drm_drv.c 
> b/drivers/gpu/drm/zte/zx_drm_drv.c
> index 6f4205e80378..02ae1caf6e8a 100644
> --- a/drivers/gpu/drm/zte/zx_drm_drv.c
> +++ b/drivers/gpu/drm/zte/zx_drm_drv.c
> @@ -122,7 +122,7 @@ static int zx_drm_bind(struct device *dev)
>   component_unbind_all(dev, drm);
>  out_unregister:
>   dev_set_drvdata(dev, NULL);
> - drm_dev_unref(drm);
> + drm_dev_put(drm);
>   return ret;
>  }
>  
> @@ -136,7 +136,7 @@ static void zx_drm_unbind(struct device *dev)
>   drm_mode_config_cleanup(drm);
>   component_unbind_all(dev, drm);
>   dev_set_drvdata(dev, NULL);
> - drm_dev_unref(drm);
> + drm_dev_put(drm);
>  }
>  
>  static const struct component_master_ops zx_drm_master_ops = {
> -- 
> 2.18.0
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2] ARM: dts: imx6sl: Add vivante gpu nodes

2018-07-17 Thread Shawn Guo
On Fri, Jul 13, 2018 at 12:39:35PM +0300, Leonard Crestez wrote:
> The imx6sl soc has gpu_2d and gpu_vg, no 3d support:
> 
> etnaviv-gpu 220.gpu: model: GC320, revision: 5007
> etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215
> 
> The IP blocks seem to be already supported.
> 
> Signed-off-by: Leonard Crestez 
> Reviewed-by: Lucas Stach 

Applied, thanks.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v4 6/7] ARM: dts: Add support for emtrion emCON-MX6 series

2018-05-04 Thread Shawn Guo
On Thu, May 03, 2018 at 12:00:06PM +0200, Türk, Jan wrote:
> > > +/ {
> > > +   aliases {
> > > +   mmc0 = 
> > > +   mmc2 = 
> > > +   mmc1 = 
> > > +   mmc3 = 
> > > +   boardID = 
> >
> > Why do you need this boardID alias?
> I wanted to have a generic entry point to address the board-id on all 
> CPU-modules with their different SoC's resulting in different devicetree 
> paths.
> Also as it now has the generic "gpio@3a" name, there would be no other way in 
> differencing the board Identifying GPIO-expander from an additionally
> attached one (except platform code etc.)
> With the alias every code could look up the information required over the 
> alias path with the same piece of code.

Okay.  But no uppercase please.  Otherwise, you introduce the following
DTC warnings (with W=1 switch) we are trying to clean up.

 Warning (alias_paths): /aliases: aliases property name must include only 
lowercase and '-'

> >
> > > +   };



> > > _nor_flash
> > > +_usdhc2
> > > +_spdif_out _spdif_in
> > > +_cpi1  _cpi2
> > > +   >;
> >
> > Again, please do not put consumer device specific pins in hog group.
> > Also, it's confusing to have the same pinctrl in both hog and consumer 
> > device
> > node, like pinctrl_nor_flash and pinctrl_usdhc2 here.
> 
> About pinctrl_nor_flash I fully agree, that's a mistake.
> pinctrl_usdhc2 is not connected on the avari, and therefore not enabled.
> As told before it is added to the Hog group to force the default pinmuxing 
> without enabling the hardware itself.

If you want to do such default pinmuxing, please do it in your firmware.
We generally do not want to use hog group too much, because that makes
it difficult to find out which client devices consume which pins.

> 
> >
> > > +};



> > > + {
> > > +   clock-frequency = <10>;
> > > +   pinctrl-names = "default";
> > > +   pinctrl-0 = <_i2c1>;
> > > +   status = "okay";
> > > +
> > > +   rtc: rtc@68 {
> >
> > Is the label actually used?  If yes, I would suggest a more specific name 
> > like
> > ds1307.
> Really? Why should it be a generic name for "gpio" and "pmic" but not a 
> generic name for an "rtc" chip?

I'm talking about label not node name.  That said I was suggesting
something like:

ds1307: rtc@68

> 
> >
> > > +   compatible = "dallas,ds1307";
> > > +   reg = <0x68>;
> > > +   };

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v4 6/7] ARM: dts: Add support for emtrion emCON-MX6 series

2018-04-27 Thread Shawn Guo
On Fri, Apr 27, 2018 at 03:24:41PM +0200, jan.tu...@emtrion.com wrote:
> From: Jan Tuerk 
> 
> This patch adds support for the emtrion GmbH emCON-MX6 modules.
> They are available with imx.6 Solo, Dual-Lite, Dual and Quad
> equipped with Memory from 512MB to 2GB (configured by U-Boot).
> 
> Our default developer-Kit ships with the Avari baseboard and the
> EDT ETM0700G0BDH6 Display (imx6[q|dl]-emcon-avari).
> 
> The devicetree is split into the common part providing all module
> components and the basic support for all SoC versions
> (imx6qdl-emcon.dtsi) and parts which are i.mx6 S|DL and D|Q relevant.
> Finally the support for the avari baseboard in the developer-kit
> configuration is provided by the emcon-avari dts files.
> 
> Signed-off-by: Jan Tuerk 
> ---
> Changes for v4:
>   - re-arrange the Patch-series to match the DT-submitting-patches
>   - Additional patch for the Documentation of the new DT-bindings
>   - alphabetically sort the DT
>   - moved duplicated Avari baseboard code into separate common file.
> 
>  arch/arm/boot/dts/Makefile |   2 +
>  arch/arm/boot/dts/imx6dl-emcon-avari.dts   |  17 +
>  arch/arm/boot/dts/imx6dl-emcon.dtsi|  28 +
>  arch/arm/boot/dts/imx6q-emcon-avari.dts|  17 +
>  arch/arm/boot/dts/imx6q-emcon.dtsi |  28 +
>  arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi | 208 
>  arch/arm/boot/dts/imx6qdl-emcon.dtsi   | 826 
> +
>  7 files changed, 1126 insertions(+)
>  create mode 100644 arch/arm/boot/dts/imx6dl-emcon-avari.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-emcon.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6q-emcon-avari.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-emcon.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6qdl-emcon-avari.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6qdl-emcon.dtsi
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 7e2424957809..05b930da3fda 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -381,6 +381,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6dl-cubox-i-emmc-som-v15.dtb \
>   imx6dl-cubox-i-som-v15.dtb \
>   imx6dl-dfi-fs700-m60.dtb \
> + imx6dl-emcon-avari.dtb \
>   imx6dl-gw51xx.dtb \
>   imx6dl-gw52xx.dtb \
>   imx6dl-gw53xx.dtb \
> @@ -442,6 +443,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6q-display5-tianma-tm070-1280x768.dtb \
>   imx6q-dmo-edmqmx6.dtb \
>   imx6q-dms-ba16.dtb \
> + imx6q-emcon-avari.dtb \
>   imx6q-evi.dtb \
>   imx6q-gk802.dtb \
>   imx6q-gw51xx.dtb \
> diff --git a/arch/arm/boot/dts/imx6dl-emcon-avari.dts 
> b/arch/arm/boot/dts/imx6dl-emcon-avari.dts
> new file mode 100644
> index ..464c82a53da3
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-emcon-avari.dts
> @@ -0,0 +1,17 @@
> +// SPDX-License-Identifier: (GPL-2.0 or MIT)
> +/*
> + * Copyright (C) 2018 emtrion GmbH
> + * Author: Jan Tuerk  
> + */
> +
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-emcon.dtsi"
> +/*Include camera2 pinmux*/
> +#include "imx6dl-emcon.dtsi"
> +#include "imx6qdl-emcon-avari.dtsi"
> +
> +/ {
> + model = "emtrion SoM emCON-MX6 Solo/Dual-Lite Avari";
> + compatible = "emtrion,emcon-mx6-avari", "fsl,imx6dl";
> +};
> diff --git a/arch/arm/boot/dts/imx6dl-emcon.dtsi 
> b/arch/arm/boot/dts/imx6dl-emcon.dtsi
> new file mode 100644
> index ..0d86e0ecdb4d
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-emcon.dtsi
> @@ -0,0 +1,28 @@
> +// SPDX-License-Identifier: (GPL-2.0 or MIT)
> +/*
> + * Copyright (C) 2018 emtrion GmbH
> + * Author: Jan Tuerk  
> + */
> +
> +/ {
> + model = "emtrion SoM emCON-MX6 Solo/DualLite";
> + compatible = "emtrion,emcon-mx6", "fsl,imx6dl";
> +};
> +
> + {
> + pinctrl_cpi2: csi1grp {
> + fsl,pins = <
> + MX6QDL_PAD_EIM_D17__IPU1_CSI1_PIXCLK0x0b0b1
> + MX6QDL_PAD_EIM_EB3__IPU1_CSI1_HSYNC 0x1b0b1
> + MX6QDL_PAD_EIM_D29__IPU1_CSI1_VSYNC 0x1b0b1
> + MX6QDL_PAD_EIM_A17__IPU1_CSI1_DATA120x1b0b1
> + MX6QDL_PAD_EIM_D27__IPU1_CSI1_DATA130x1b0b1
> + MX6QDL_PAD_EIM_D26__IPU1_CSI1_DATA140x1b0b1
> + MX6QDL_PAD_EIM_D20__IPU1_CSI1_DATA150x1b0b1
> + MX6QDL_PAD_EIM_D19__IPU1_CSI1_DATA160x1b0b1
> + MX6QDL_PAD_EIM_D18__IPU1_CSI1_DATA170x1b0b1
> + MX6QDL_PAD_EIM_D16__IPU1_CSI1_DATA180x1b0b1
> + MX6QDL_PAD_EIM_EB2__IPU1_CSI1_DATA190x1b0b1
> + >;
> + };
> +};

I'm uncomfortable with maintain two more dtsi files only for a single
pinctrl entry.  Instead, I would suggest you put CSI node and its
pinctrl entry into imx6q/dl-emcon-avari.dts, and have CSI node refer to
its pinctrl entry 

Re: [PATCH v4 0/7] Add basic support for emtrion emCON-MX6 modules

2018-04-27 Thread Shawn Guo
On Fri, Apr 27, 2018 at 03:24:35PM +0200, jan.tu...@emtrion.com wrote:
> From: Jan Tuerk 
> 
> Changes for v4:
>   - re-arrange the Patch-series to match the DT-submitting-patches
>   - Additional patch for the Documentation of the new DT-bindings
> 
> [PATCH v4 1/7] dt-bindings: display: Document the EDT et* displays in one 
> file.
>   - no change (re-arranged 3/6 => 1/7)
> 
> [PATCH v4 2/7] drm/panel: Add support for the EDT ETM0700G0BDH6
>   - no change (re-arranged 1/6 => 2/7)
> 
> [PATCH v4 3/7] drm/panel: Add support for the EDT ETM0700G0EDH6
>   - no change (re-arranged 2/6 => 3/7)

Please split the series into two, DRM driver (above) and platform part
(below), to avoid posting one part over and over again with zero
changes, but only because the other part needs update.

Shawn

> 
> [PATCH v4 4/7] ARM: dts: imx: Add an cpu0 label for imx6dl devices.
>   - no change
> 
> [PATCH v4 5/7] dt-bindings: arm: Document emtrion emCON-MX6 bindings
>   - separate patch for the emtrion emCON-MX6 DT-bindings
> 
> [PATCH v4 6/7] ARM: dts: Add support for emtrion emCON-MX6 series
>   - alphabetically sort the DT
>   - moved duplicated Avari baseboard code into separate file.
> 
> [PATCH v4 7/7] ARM: imx_v6_v7_defconfig: Enable DA0963 PMIC support.
>   - unchaged
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v3 5/6] ARM: dts: Add support for emtrion emCON-MX6 series

2018-04-23 Thread Shawn Guo
On Fri, Apr 20, 2018 at 02:50:52PM +0200, jan.tu...@emtrion.com wrote:
> From: Jan Tuerk 
> 
> This patch adds support for the emtrion GmbH emCON-MX6 modules.
> They are available with imx.6 Solo, Dual-Lite, Dual and Quad
> equipped with Memory from 512MB to 2GB (configured by U-Boot).
> 
> Our default developer-Kit ships with the Avari baseboard and the
> EDT ETM0700G0BDH6 Display (imx6[q|dl]-emcon-avari).
> 
> The devicetree is split into the common part providing all module
> components and the basic support for all SoC versions
> (imx6qdl-emcon.dtsi) and parts which are i.mx6 S|DL and D|Q relevant.
> Finally the support for the avari baseboard in the developer-kit
> configuration is provided by the emcon-avari dts files.
> 
> Signed-off-by: Jan Tuerk 
> ---
>  Documentation/devicetree/bindings/arm/emtrion.txt |  13 +

It's better to have a separate patch for bindings doc, which needs to be
acknowledged by DT maintainers.

>  arch/arm/boot/dts/Makefile|   2 +
>  arch/arm/boot/dts/imx6dl-emcon-avari.dts  | 224 ++
>  arch/arm/boot/dts/imx6dl-emcon.dtsi   |  27 +
>  arch/arm/boot/dts/imx6q-emcon-avari.dts   | 224 ++
>  arch/arm/boot/dts/imx6q-emcon.dtsi|  27 +
>  arch/arm/boot/dts/imx6qdl-emcon.dtsi  | 838 
> ++
>  7 files changed, 1355 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/arm/emtrion.txt
>  create mode 100644 arch/arm/boot/dts/imx6dl-emcon-avari.dts
>  create mode 100644 arch/arm/boot/dts/imx6dl-emcon.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6q-emcon-avari.dts
>  create mode 100644 arch/arm/boot/dts/imx6q-emcon.dtsi
>  create mode 100644 arch/arm/boot/dts/imx6qdl-emcon.dtsi
> 
> diff --git a/Documentation/devicetree/bindings/arm/emtrion.txt 
> b/Documentation/devicetree/bindings/arm/emtrion.txt
> new file mode 100644
> index ..3ff6c6c2034d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/emtrion.txt
> @@ -0,0 +1,13 @@
> +Emtrion Devicetree Bindings
> +===
> +
> +emCON Series:
> +-
> +
> +Required root node properties
> + - compatible:
> + - "emtrion,emcon-mx6", "fsl,imx6q", "fsl,imx6dl"; : emCON-MX6 Generic 
> SoM
> + - "emtrion,emcon-mx6", "fsl,imx6q"; : emCON-MX6D or 
> emCON-MX6Q SoM
> + - "emtrion,emcon-mx6-avari", "fsl,imx6q";   : emCON-MX6D or 
> emCON-MX6Q SoM on Avari Base
> + - "emtrion,emcon-mx6", "fsl,imx6dl";: emCON-MX6S or 
> emCON-MX6DL SoM
> + - "emtrion,emcon-mx6-avari", "fsl,imx6dl";  : emCON-MX6S or 
> emCON-MX6DL SoM on Avari Base
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 7e2424957809..05b930da3fda 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -381,6 +381,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6dl-cubox-i-emmc-som-v15.dtb \
>   imx6dl-cubox-i-som-v15.dtb \
>   imx6dl-dfi-fs700-m60.dtb \
> + imx6dl-emcon-avari.dtb \
>   imx6dl-gw51xx.dtb \
>   imx6dl-gw52xx.dtb \
>   imx6dl-gw53xx.dtb \
> @@ -442,6 +443,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
>   imx6q-display5-tianma-tm070-1280x768.dtb \
>   imx6q-dmo-edmqmx6.dtb \
>   imx6q-dms-ba16.dtb \
> + imx6q-emcon-avari.dtb \
>   imx6q-evi.dtb \
>   imx6q-gk802.dtb \
>   imx6q-gw51xx.dtb \
> diff --git a/arch/arm/boot/dts/imx6dl-emcon-avari.dts 
> b/arch/arm/boot/dts/imx6dl-emcon-avari.dts
> new file mode 100644
> index ..2344fb9498e3
> --- /dev/null
> +++ b/arch/arm/boot/dts/imx6dl-emcon-avari.dts
> @@ -0,0 +1,224 @@
> +// SPDX-License-Identifier: (GPL-2.0 or MIT)
> +/* Copyright (C) 2018 emtrion GmbH
> + * Author: Jan Tuerk  
> + */

/*
 * Copyright ...
 */

> +
> +/dts-v1/;
> +#include "imx6dl.dtsi"
> +#include "imx6qdl-emcon.dtsi"
> +#include "imx6dl-emcon.dtsi" /*Include camera2 pinmux*/

/* bla bla */

> +
> +/ {
> + model = "emtrion SoM emCON-MX6 Solo/Dual-Lite Avari";
> + compatible = "emtrion,emcon-mx6-avari", "fsl,imx6dl";
> +
> + aliases {
> + mmc0 = 
> + mmc2 = 
> + mmc1 = 
> + mmc3 = 
> + };
> +
> + chosen {
> + stdout-path = <>;
> + };
> +
> + memory {

The unit-address is missing.

> + reg = <0x1000 0x4000>;
> + };
> +
> + supplies {
> + compatible = "simple-bus";
> + #address-cells = <1>;
> + #size-cells = <0>;

DT maintainers do not like this fake container node.  Please put the
fixed regulator nodes directly under root with a unique name like below.

reg_xxx: regulator-xxx {
...
};

> +
> + wallplug5p0: supply@0 {
> + compatible = "regulator-fixed";
> + reg = <0>;
> + regulator-name = "WALL-PLUG";
> +  

Re: [PATCH v2 13/23] drm/zte: Stop consulting plane->fb

2018-03-26 Thread Shawn Guo
On Thu, Mar 22, 2018 at 07:40:03PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> We want to get rid of plane->fb on atomic drivers. Stop looking at it.

Would it be more precise to use "plane->crtc" in both subject and commit
log?  Other than that:

Acked-by: Shawn Guo <shawn...@kernel.org>

> 
> v2: Use old_state->crtc (Maarten)
> 
> Cc: Shawn Guo <shawn...@kernel.org>
> Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> ---
>  drivers/gpu/drm/zte/zx_plane.c | 2 +-
>  drivers/gpu/drm/zte/zx_vou.c   | 5 +++--
>  drivers/gpu/drm/zte/zx_vou.h   | 3 ++-
>  3 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/zte/zx_plane.c b/drivers/gpu/drm/zte/zx_plane.c
> index 94545adac50d..d1931f5ea0b2 100644
> --- a/drivers/gpu/drm/zte/zx_plane.c
> +++ b/drivers/gpu/drm/zte/zx_plane.c
> @@ -268,7 +268,7 @@ static void zx_plane_atomic_disable(struct drm_plane 
> *plane,
>   struct zx_plane *zplane = to_zx_plane(plane);
>   void __iomem *hbsc = zplane->hbsc;
>  
> - zx_vou_layer_disable(plane);
> + zx_vou_layer_disable(plane, old_state);
>  
>   /* Disable HBSC block */
>   zx_writel_mask(hbsc + HBSC_CTRL0, HBSC_CTRL_EN, 0);
> diff --git a/drivers/gpu/drm/zte/zx_vou.c b/drivers/gpu/drm/zte/zx_vou.c
> index 7491813131f3..442311d31110 100644
> --- a/drivers/gpu/drm/zte/zx_vou.c
> +++ b/drivers/gpu/drm/zte/zx_vou.c
> @@ -627,9 +627,10 @@ void zx_vou_layer_enable(struct drm_plane *plane)
>   zx_writel_mask(vou->osd + OSD_CTRL0, bits->enable, bits->enable);
>  }
>  
> -void zx_vou_layer_disable(struct drm_plane *plane)
> +void zx_vou_layer_disable(struct drm_plane *plane,
> +   struct drm_plane_state *old_state)
>  {
> - struct zx_crtc *zcrtc = to_zx_crtc(plane->crtc);
> + struct zx_crtc *zcrtc = to_zx_crtc(old_state->crtc);
>   struct zx_vou_hw *vou = zcrtc->vou;
>   struct zx_plane *zplane = to_zx_plane(plane);
>   const struct vou_layer_bits *bits = zplane->bits;
> diff --git a/drivers/gpu/drm/zte/zx_vou.h b/drivers/gpu/drm/zte/zx_vou.h
> index 97d72bfce982..5b7f84fbb112 100644
> --- a/drivers/gpu/drm/zte/zx_vou.h
> +++ b/drivers/gpu/drm/zte/zx_vou.h
> @@ -62,6 +62,7 @@ void zx_vou_config_dividers(struct drm_crtc *crtc,
>   struct vou_div_config *configs, int num);
>  
>  void zx_vou_layer_enable(struct drm_plane *plane);
> -void zx_vou_layer_disable(struct drm_plane *plane);
> +void zx_vou_layer_disable(struct drm_plane *plane,
> +   struct drm_plane_state *old_state);
>  
>  #endif /* __ZX_VOU_H__ */
> -- 
> 2.16.1
> 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm: zte: Fix an error handling path in 'zx_crtc_bind()'

2018-03-12 Thread Shawn Guo
+ Daniel

On Sun, Mar 11, 2018 at 11:32:03PM +0100, Christophe JAILLET wrote:
> 'ret' is known to be 0 at this point. It must be updated by the value
> returned by 'clk_prepare_enable()'.
> 
> Fixes: 0a886f59528a ("drm: zte: add initial vou drm driver")
> Signed-off-by: Christophe JAILLET <christophe.jail...@wanadoo.fr>

Acked-by: Shawn Guo <shawn...@kernel.org>
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] fix double ;;s in code

2018-02-24 Thread Shawn Guo
On Sat, Feb 24, 2018 at 09:52:27AM +0100, Pavel Machek wrote:
> Hi!
> 
> > > diff --git a/drivers/soc/imx/gpc.c b/drivers/soc/imx/gpc.c
> > > index 53f7275..cfb42f5 100644
> > > --- a/drivers/soc/imx/gpc.c
> > > +++ b/drivers/soc/imx/gpc.c
> > > @@ -348,7 +348,7 @@ static int imx_gpc_old_dt_init(struct device *dev, 
> > > struct regmap *regmap,
> > >   if (i == 1) {
> > >   domain->supply = devm_regulator_get(dev, "pu");
> > >   if (IS_ERR(domain->supply))
> > > - return PTR_ERR(domain->supply);;
> > > + return PTR_ERR(domain->supply);
> > >  
> > >   ret = imx_pgc_get_clocks(dev, domain);
> > >   if (ret)
> > > 
> > 
> > Considering the controversy how the changes should be merged, I'm going
> > to send a separate patch just for IMX GPC driver with a reported-by-you
> > tag.  Thanks for catching this.
> 
> That works for me.
> 
> Alternatively... Andrew Morton merged the patch to his -mm tree
> (thanks!), so you don't need to take any action, and it will be
> eventually fixed.

Okay, I'm dropping my patch from IMX tree.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] fix double ;;s in code

2018-02-22 Thread Shawn Guo
Hi Pavel,

On Sat, Feb 17, 2018 at 10:19:55PM +0100, Pavel Machek wrote:
...
> diff --git a/drivers/soc/imx/gpc.c b/drivers/soc/imx/gpc.c
> index 53f7275..cfb42f5 100644
> --- a/drivers/soc/imx/gpc.c
> +++ b/drivers/soc/imx/gpc.c
> @@ -348,7 +348,7 @@ static int imx_gpc_old_dt_init(struct device *dev, struct 
> regmap *regmap,
>   if (i == 1) {
>   domain->supply = devm_regulator_get(dev, "pu");
>   if (IS_ERR(domain->supply))
> - return PTR_ERR(domain->supply);;
> + return PTR_ERR(domain->supply);
>  
>   ret = imx_pgc_get_clocks(dev, domain);
>   if (ret)
> 

Considering the controversy how the changes should be merged, I'm going
to send a separate patch just for IMX GPC driver with a reported-by-you
tag.  Thanks for catching this.

Shawn
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


  1   2   3   4   >