[linux-sunxi] [DO NOT MERGE] [PATCH v6 6/6] ARM: dts: sun8i: bananapi-m2m: Enable DLPC3433 Bridge (I2C)

2021-12-10 Thread Jagan Teki
R16 board has DLCP3433 DSI bridge for connecting TI DMD Projectors.

Enable support for it.

Note: This is for testing purpose, DLPC3433 not available in BPI-M2M.

Signed-off-by: Jagan Teki 
---
 .../boot/dts/sun8i-r16-bananapi-m2m-i2c.dts   | 69 +++
 1 file changed, 69 insertions(+)

diff --git a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-i2c.dts 
b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-i2c.dts
index 7713cdaf6211..a96fbfd743f7 100644
--- a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-i2c.dts
+++ b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-i2c.dts
@@ -86,6 +86,16 @@ vol-down {
};
};
 
+   panel {
+   compatible = "panel-simple";
+
+   port {
+   panel_out_bridge: endpoint {
+   remote-endpoint = <_out_panel>;
+   };
+   };
+   };
+
reg_vcc5v0: vcc5v0 {
compatible = "regulator-fixed";
regulator-name = "vcc5v0";
@@ -125,6 +135,32 @@  {
status = "okay";
 };
 
+ {
+   status = "okay";
+};
+
+ {
+   status = "okay";
+};
+
+ {
+   vcc-dsi-supply = <_dcdc1>;  /* VCC-DSI */
+   status = "okay";
+
+   ports {
+   #address-cells = <1>;
+   #size-cells = <0>;
+
+   port@0 {
+   reg = <0>;
+
+   dsi_out_bridge: endpoint {
+   remote-endpoint = <_out_dsi>;
+   };
+   };
+   };
+};
+
  {
status = "okay";
 };
@@ -132,6 +168,35 @@  {
  {
clock-frequency = <10>;
status = "okay";
+
+   bridge@1d {
+   compatible = "ti,dlpc3433";
+   reg = <0x1d>;
+   enable-gpios = < 4 15 GPIO_ACTIVE_HIGH>;
+   vcc_intf-supply = <_dldo1>;
+
+   ports {
+   #address-cells = <1>;
+   #size-cells = <0>;
+
+   bridge_in: port@0 {
+   reg = <0>;
+
+   bridge_out_dsi: endpoint {
+   remote-endpoint = <_out_bridge>;
+   data-lanes = <0 1 2 3>;
+   };
+   };
+
+   bridge_out: port@1 {
+   reg = <1>;
+
+   bridge_out_panel: endpoint {
+   remote-endpoint = <_out_bridge>;
+   };
+   };
+   };
+   };
 };
 
  {
@@ -289,6 +354,10 @@  {
"Right DAC", "AIF1 Slot 0 Right";
 };
 
+ {
+   status = "okay";
+};
+
  {
pinctrl-names = "default";
pinctrl-0 = <_pb_pins>;
-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20211210111711.2072660-7-jagan%40amarulasolutions.com.


[linux-sunxi] [DO NOT MERGE] [PATCH v6 5/6] ARM: dts: sun8i: bananapi-m2m: Enable ICN6211 DSI Bridge

2021-12-10 Thread Jagan Teki
Bananapi S070WV20-CT16 is a pure RGB output panel with ICN6211
DSI/RGB convertor bridge.

Enable bridge along with associated panel.

Signed-off-by: Jagan Teki 
---
 arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts | 64 
 1 file changed, 64 insertions(+)

diff --git a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts 
b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts
index bf5b5e2f6168..501666dfb5ee 100644
--- a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts
+++ b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts
@@ -44,6 +44,7 @@
 #include "sun8i-a33.dtsi"
 
 #include 
+#include 
 
 / {
model = "BananaPi M2 Magic";
@@ -55,12 +56,21 @@ aliases {
i2c2 = 
serial0 = 
serial1 = 
+   mmc0 = 
};
 
chosen {
stdout-path = "serial0:115200n8";
};
 
+   backlight: backlight {
+   compatible = "pwm-backlight";
+   pwms = < 0 5 PWM_POLARITY_INVERTED>;
+   brightness-levels = <1 2 4 8 16 32 64 128 255>;
+   default-brightness-level = <8>;
+   enable-gpios = <_pio 0 4 GPIO_ACTIVE_HIGH>; /* LCD-BL-EN: PL4 
*/
+   };
+
leds {
compatible = "gpio-leds";
 
@@ -81,6 +91,18 @@ led-2 {
};
};
 
+   panel {
+   compatible = "bananapi,s070wv20-ct16";
+   enable-gpios = < 1 7 GPIO_ACTIVE_HIGH>; /* LCD-PWR-EN: PB7 
*/
+   backlight = <>;
+
+   port {
+   panel_out_bridge: endpoint {
+   remote-endpoint = <_out_panel>;
+   };
+   };
+   };
+
reg_vcc5v0: vcc5v0 {
compatible = "regulator-fixed";
regulator-name = "vcc5v0";
@@ -122,6 +144,38 @@  {
status = "okay";
 };
 
+ {
+   status = "okay";
+};
+
+ {
+   status = "okay";
+};
+
+ {
+   vcc-dsi-supply = <_dcdc1>;  /* VCC-DSI */
+   status = "okay";
+
+   bridge@0 {
+   compatible = "chipone,icn6211";
+   reg = <0>;
+   enable-gpios = <_pio 0 5 GPIO_ACTIVE_HIGH>; /* LCD-RST: PL5 */
+
+   ports {
+   #address-cells = <1>;
+   #size-cells = <0>;
+
+   bridge_out: port@1 {
+   reg = <1>;
+
+   bridge_out_panel: endpoint {
+   remote-endpoint = <_out_bridge>;
+   };
+   };
+   };
+   };
+};
+
  {
status = "okay";
 };
@@ -157,6 +211,12 @@  {
status = "okay";
 };
 
+ {
+   pinctrl-names = "default";
+   pinctrl-0 = <_pin>;
+   status = "okay";
+};
+
 _rsb {
status = "okay";
 
@@ -269,6 +329,10 @@  {
status = "okay";
 };
 
+ {
+   status = "okay";
+};
+
  {
pinctrl-names = "default";
pinctrl-0 = <_pb_pins>;
-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20211210111711.2072660-6-jagan%40amarulasolutions.com.


[linux-sunxi] [DO NOT MERGE] [PATCH v6 4/6] ARM: dts: sun8i: bananapi-m2m: Enable iS070WV20-CT16 DSI Panel

2021-12-10 Thread Jagan Teki
Bananapi S070WV20-CT16 is a pure RGB output panel with ICN6211
DSI/RGB convertor bridge.

Enable support for it.

Signed-off-by: Jagan Teki 
---
 .../boot/dts/sun8i-r16-bananapi-m2m-panel.dts | 41 +++
 1 file changed, 41 insertions(+)

diff --git a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-panel.dts 
b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-panel.dts
index bf5b5e2f6168..04392358b492 100644
--- a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-panel.dts
+++ b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m-panel.dts
@@ -44,6 +44,7 @@
 #include "sun8i-a33.dtsi"
 
 #include 
+#include 
 
 / {
model = "BananaPi M2 Magic";
@@ -55,12 +56,21 @@ aliases {
i2c2 = 
serial0 = 
serial1 = 
+   mmc0 = 
};
 
chosen {
stdout-path = "serial0:115200n8";
};
 
+   backlight: backlight {
+   compatible = "pwm-backlight";
+   pwms = < 0 5 PWM_POLARITY_INVERTED>;
+   brightness-levels = <1 2 4 8 16 32 64 128 255>;
+   default-brightness-level = <8>;
+   enable-gpios = <_pio 0 4 GPIO_ACTIVE_HIGH>; /* LCD-BL-EN: PL4 
*/
+   };
+
leds {
compatible = "gpio-leds";
 
@@ -122,6 +132,27 @@  {
status = "okay";
 };
 
+ {
+   status = "okay";
+};
+
+ {
+   status = "okay";
+};
+
+ {
+   vcc-dsi-supply = <_dcdc1>;  /* VCC-DSI */
+   status = "okay";
+
+   panel@0 {
+   compatible = "bananapi,s070wv20-ct16-icn6211";
+   reg = <0>;
+   reset-gpios = <_pio 0 5 GPIO_ACTIVE_HIGH>; /* LCD-RST: PL5 */
+   enable-gpios = < 1 7 GPIO_ACTIVE_HIGH>; /* LCD-PWR-EN: PB7 
*/
+   backlight = <>;
+   };
+};
+
  {
status = "okay";
 };
@@ -157,6 +188,12 @@  {
status = "okay";
 };
 
+ {
+   pinctrl-names = "default";
+   pinctrl-0 = <_pin>;
+   status = "okay";
+};
+
 _rsb {
status = "okay";
 
@@ -269,6 +306,10 @@  {
status = "okay";
 };
 
+ {
+   status = "okay";
+};
+
  {
pinctrl-names = "default";
pinctrl-0 = <_pb_pins>;
-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20211210111711.2072660-5-jagan%40amarulasolutions.com.


[linux-sunxi] [PATCH v6 3/6] drm: sun4i: dsi: Add bridge support

2021-12-10 Thread Jagan Teki
Some display panels would come up with a non-DSI output, those
can have an option to connect the DSI host by means of interface
bridge converter.

This DSI to non-DSI interface bridge converter would require
DSI Host to handle drm bridge functionalities in order to
communicate interface bridge.

This patch adds support for bridge functionalities in Allwinner
DSI controller.

Supporting down-stream bridge makes few changes in the driver.

- It drops drm_connector and related operations as drm_bridge_attach
  creates connector during attachment.

- It drop panel pointer and iterate the bridge, so-that it can operate
  the normal bridge and panel_bridge in constitutive callbacks.

- It uses devm_drm_of_get_bridge for panel or bridge lookup. It uses
  port 0 and endpoint 0 to support I2C-based bridges eventhough the
  usual Allwinner DSI OF graph doesn't require this for panel and
  non-I2C based downstream bridges.

Signed-off-by: Jagan Teki 
---
Changes for v6:
- support donwstream bridge
- drop bridge conversion
- devm_drm_of_get_bridge() require child lookup
https://patchwork.kernel.org/project/dri-devel/cover/20211207054747.461029-1-ja...@amarulasolutions.com/
Changes for v5:
- add atomic APIs
- find host and device variant DSI devices.
Changes for v4, v3:
- none

 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 83 ++
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h |  9 +--
 2 files changed, 33 insertions(+), 59 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c 
b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 9cf91dcac3f2..f1d612bf1a0b 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -21,6 +21,7 @@
 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -720,6 +721,7 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder 
*encoder)
struct mipi_dsi_device *device = dsi->device;
union phy_configure_opts opts = { };
struct phy_configure_opts_mipi_dphy *cfg = _dphy;
+   struct drm_bridge *iter;
u16 delay;
int err;
 
@@ -769,8 +771,10 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder 
*encoder)
phy_configure(dsi->dphy, );
phy_power_on(dsi->dphy);
 
-   if (dsi->panel)
-   drm_panel_prepare(dsi->panel);
+   list_for_each_entry(iter, >bridge_chain, chain_node) {
+   if (iter->funcs->pre_enable)
+   iter->funcs->pre_enable(iter);
+   }
 
/*
 * FIXME: This should be moved after the switch to HS mode.
@@ -784,8 +788,10 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder 
*encoder)
 * ordering on the panels I've tested it with, so I guess this
 * will do for now, until that IP is better understood.
 */
-   if (dsi->panel)
-   drm_panel_enable(dsi->panel);
+   list_for_each_entry(iter, >bridge_chain, chain_node) {
+   if (iter->funcs->enable)
+   iter->funcs->enable(iter);
+   }
 
sun6i_dsi_start(dsi, DSI_START_HSC);
 
@@ -797,12 +803,16 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder 
*encoder)
 static void sun6i_dsi_encoder_disable(struct drm_encoder *encoder)
 {
struct sun6i_dsi *dsi = encoder_to_sun6i_dsi(encoder);
+   struct drm_bridge *iter;
 
DRM_DEBUG_DRIVER("Disabling DSI output\n");
 
-   if (dsi->panel) {
-   drm_panel_disable(dsi->panel);
-   drm_panel_unprepare(dsi->panel);
+   list_for_each_entry(iter, >bridge_chain, chain_node) {
+   if (iter->funcs->disable)
+   iter->funcs->disable(iter);
+
+   if (iter->funcs->post_disable)
+   iter->funcs->post_disable(iter);
}
 
phy_power_off(dsi->dphy);
@@ -813,35 +823,6 @@ static void sun6i_dsi_encoder_disable(struct drm_encoder 
*encoder)
regulator_disable(dsi->regulator);
 }
 
-static int sun6i_dsi_get_modes(struct drm_connector *connector)
-{
-   struct sun6i_dsi *dsi = connector_to_sun6i_dsi(connector);
-
-   return drm_panel_get_modes(dsi->panel, connector);
-}
-
-static const struct drm_connector_helper_funcs 
sun6i_dsi_connector_helper_funcs = {
-   .get_modes  = sun6i_dsi_get_modes,
-};
-
-static enum drm_connector_status
-sun6i_dsi_connector_detect(struct drm_connector *connector, bool force)
-{
-   struct sun6i_dsi *dsi = connector_to_sun6i_dsi(connector);
-
-   return dsi->panel ? connector_status_connected :
-   connector_status_disconnected;
-}
-
-static const struct drm_connector_funcs sun6i_dsi_connector_funcs = {
-   .detect = sun6i_dsi_connector_detect,
-   .fill_modes = drm_helper_probe_single_connector_modes,
-   .destroy= drm_connector_cleanup,
-   .reset  = drm_atomic_helper_connector_reset,
-   .atomic_duplicate_state = 

[linux-sunxi] [PATCH v6 2/6] drm: sun4i: dsi: Add component only once DSI device attached

2021-12-10 Thread Jagan Teki
Having component_add for running all drm bind callbacks returns
error or unbound due to chain of DSI devices connected across
bridge topology on a display pipeline.

In a typical bridge oriented display pipeline where the host is
connected to the bridge converter and that indeed connected to
a panel.

DRM => SUN6I DSI Host => Chipone ICN6211 => BananaPi Panel

The bridge converter is looking for a panel to probe first and
then attach the host. The host attach is looking for a bridge
converter to probe and preserve bridge pointer, at this movement
the host is trying to bind the all callbacks and one of the bind
callback in the DSI host is trying to find the bridge using the
bridge pointer in sun6i_dsi_attach call.

chipone_probe().start
drm_of_find_panel_or_bridge
mipi_dsi_attach
 sun6i_dsi_attach
 drm_of_find_panel_or_bridge
chipone_probe().done

sun6i_dsi_probe().start
mipi_dsi_host_register
component_add
sun6i_dsi_probe().done

However, the movement when panel defers the probe, will make the
bridge converter defer the host attach call which eventually found
a NULL bridge pointer during DSI component bind callback.

So, in order to prevent this scenario of binding invalid bridge,
wait for DSI devices on the pipeline to probe first and start the
binding process by moving component_add in host probe to attach call.

chipone_probe().start
drm_of_find_panel_or_bridge
mipi_dsi_attach
 sun6i_dsi_attach
 drm_of_find_panel_or_bridge
  component_add
chipone_probe().done

sun6i_dsi_probe().start
mipi_dsi_host_register
sun6i_dsi_probe().done

Signed-off-by: Jagan Teki 
---
Changes for v6:
- none
Changes for v5:
- new patch

 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 120 +
 1 file changed, 61 insertions(+), 59 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c 
b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 4bdcce8f1d84..9cf91dcac3f2 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -959,11 +959,63 @@ static int sun6i_dsi_dcs_read(struct sun6i_dsi *dsi,
return 1;
 }
 
+static int sun6i_dsi_bind(struct device *dev, struct device *master,
+void *data)
+{
+   struct drm_device *drm = data;
+   struct sun6i_dsi *dsi = dev_get_drvdata(dev);
+   int ret;
+
+   drm_encoder_helper_add(>encoder,
+  _dsi_enc_helper_funcs);
+   ret = drm_simple_encoder_init(drm, >encoder,
+ DRM_MODE_ENCODER_DSI);
+   if (ret) {
+   dev_err(dsi->dev, "Couldn't initialise the DSI encoder\n");
+   return ret;
+   }
+   dsi->encoder.possible_crtcs = BIT(0);
+
+   drm_connector_helper_add(>connector,
+_dsi_connector_helper_funcs);
+   ret = drm_connector_init(drm, >connector,
+_dsi_connector_funcs,
+DRM_MODE_CONNECTOR_DSI);
+   if (ret) {
+   dev_err(dsi->dev,
+   "Couldn't initialise the DSI connector\n");
+   goto err_cleanup_connector;
+   }
+
+   drm_connector_attach_encoder(>connector, >encoder);
+
+   return 0;
+
+err_cleanup_connector:
+   drm_encoder_cleanup(>encoder);
+   return ret;
+}
+
+static void sun6i_dsi_unbind(struct device *dev, struct device *master,
+   void *data)
+{
+   struct sun6i_dsi *dsi = dev_get_drvdata(dev);
+
+   drm_encoder_cleanup(>encoder);
+}
+
+static const struct component_ops sun6i_dsi_ops = {
+   .bind   = sun6i_dsi_bind,
+   .unbind = sun6i_dsi_unbind,
+};
+
 static int sun6i_dsi_attach(struct mipi_dsi_host *host,
struct mipi_dsi_device *device)
 {
struct sun6i_dsi *dsi = host_to_sun6i_dsi(host);
struct drm_panel *panel = of_drm_find_panel(device->dev.of_node);
+   struct device *dev = dsi->dev;
+   int ret;
 
if (IS_ERR(panel))
return PTR_ERR(panel);
@@ -973,6 +1025,13 @@ static int sun6i_dsi_attach(struct mipi_dsi_host *host,
 
dev_info(host->dev, "Attached device %s\n", device->name);
 
+   ret = component_add(dev, _dsi_ops);
+   if (ret) {
+   dev_err(dev, "Couldn't register our component\n");
+   mipi_dsi_host_unregister(>host);
+   return ret;
+   }
+
return 0;
 }
 
@@ -984,6 +1043,8 @@ static int sun6i_dsi_detach(struct mipi_dsi_host *host,
dsi->panel = NULL;
dsi->device = NULL;
 
+   component_del(dsi->dev, _dsi_ops);
+
return 0;
 }
 
@@ -1041,56 +1102,6 @@ static const struct regmap_config 
sun6i_dsi_regmap_config = {
.name   = "mipi-dsi",
 };
 
-static int sun6i_dsi_bind(struct device *dev, struct device *master,
-void *data)
-{
-   

[linux-sunxi] [PATCH v6 1/6] drm: sun4i: dsi: Drop DRM bind race with bridge attach

2021-12-10 Thread Jagan Teki
Existing host driver will keep looking for DRM pointer in
sun6i_dsi_attach and defers even if the particular DSI device
is found for the first time. Meanwhile it triggers the bind
callback and gets the DRM pointer and then continues the
sun6i_dsi_attach.

This makes a deadlock situation if sun6i_dsi_attach is trying
to find the bridge.

If interface bridge is trying to call host attach, then host
sun6i_dsi_attach is trying to find bridge and defers the
interface bridge even if it found the bridge as bind callback
does not complete at the movement. So, this sun6i_dsi_attach
defers interface bridge and triggers the bind callback and
tries to attach the bridge with a bridge pointer which is not
available at the moment.

Eventually these callbacks are triggered recursively, as
sun6i_dsi_attach defers interface bridge and bind callback
defers sun6i_dsi_attach due to invalid bridge ponter.

This patch prevents this situation by probing all DSI devices
on the pipeline first and then triggers the bind callback by
dropping exing DRM binding logic.

Signed-off-by: Jagan Teki 
---
Changes for v6:
- none
Changes for v5:
- new patch

 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 10 +-
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h |  1 -
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c 
b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index 527c7b2474da..4bdcce8f1d84 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -967,14 +967,10 @@ static int sun6i_dsi_attach(struct mipi_dsi_host *host,
 
if (IS_ERR(panel))
return PTR_ERR(panel);
-   if (!dsi->drm || !dsi->drm->registered)
-   return -EPROBE_DEFER;
 
dsi->panel = panel;
dsi->device = device;
 
-   drm_kms_helper_hotplug_event(dsi->drm);
-
dev_info(host->dev, "Attached device %s\n", device->name);
 
return 0;
@@ -988,8 +984,6 @@ static int sun6i_dsi_detach(struct mipi_dsi_host *host,
dsi->panel = NULL;
dsi->device = NULL;
 
-   drm_kms_helper_hotplug_event(dsi->drm);
-
return 0;
 }
 
@@ -1077,8 +1071,6 @@ static int sun6i_dsi_bind(struct device *dev, struct 
device *master,
 
drm_connector_attach_encoder(>connector, >encoder);
 
-   dsi->drm = drm;
-
return 0;
 
 err_cleanup_connector:
@@ -1091,7 +1083,7 @@ static void sun6i_dsi_unbind(struct device *dev, struct 
device *master,
 {
struct sun6i_dsi *dsi = dev_get_drvdata(dev);
 
-   dsi->drm = NULL;
+   drm_encoder_cleanup(>encoder);
 }
 
 static const struct component_ops sun6i_dsi_ops = {
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h 
b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h
index c863900ae3b4..61e88ea6044d 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h
@@ -29,7 +29,6 @@ struct sun6i_dsi {
 
struct device   *dev;
struct mipi_dsi_device  *device;
-   struct drm_device   *drm;
struct drm_panel*panel;
 };
 
-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20211210111711.2072660-2-jagan%40amarulasolutions.com.


[linux-sunxi] [PATCH v6 0/6] drm: sun4i: dsi: Bridge support

2021-12-10 Thread Jagan Teki
This series add bridge support for Allwinner DSI controller.

In addition to previous version, this series add bridge support
only not doing any bridge conversion at the moment.

Previous version changes [1].

Patch 1: Drop the DRM bind race while attaching bridges

Patch 2: Move component_add into sun6i_dsi_attach

Patch 3: Add Bridge driver

Patch 4: Add mode_set API

Patch 5: Enable DSI Panel

Patch 6: Enable DSI Bridge

Patch 7: Enable DSI Bridge (I2C)

[1] 
https://patchwork.kernel.org/project/dri-devel/cover/20211122065223.88059-1-ja...@amarulasolutions.com/

Any inputs?
Jagan.

Jagan Teki (6):
  drm: sun4i: dsi: Drop DRM bind race with bridge attach
  drm: sun4i: dsi: Add component only once DSI device attached
  drm: sun4i: dsi: Add bridge support
  [DO NOT MERGE] ARM: dts: sun8i: bananapi-m2m: Enable iS070WV20-CT16 DSI Panel
  [DO NOT MERGE] ARM: dts: sun8i: bananapi-m2m: Enable ICN6211 DSI Bridge
  [DO NOT MERGE] ARM: dts: sun8i: bananapi-m2m: Enable DLPC3433 Bridge (I2C)

 .../boot/dts/sun8i-r16-bananapi-m2m-i2c.dts   |  69 +++
 .../boot/dts/sun8i-r16-bananapi-m2m-panel.dts |  41 
 arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts  |  64 ++
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c| 187 --
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h|  10 +-
 5 files changed, 256 insertions(+), 115 deletions(-)

-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20211210111711.2072660-1-jagan%40amarulasolutions.com.