Commit b99d90b3417926533f62ac27dab2dacdcdbd95f3

Authored by Ye Li
1 parent bde53dbc5b

MLK-23964-19 video: sec_dsim_imx: Update DSI driver to support imx8mp

iMX8MP does not have dispmix resets, so allowing not have this
property.

Signed-off-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit d39e90277acc47d02fbe6458e7a03280b72c9158)

Showing 1 changed file with 27 additions and 20 deletions Side-by-side Diff

drivers/video/imx/sec_dsim_imx.c
... ... @@ -36,6 +36,7 @@
36 36 struct reset_ctl_bulk mipi_reset;
37 37 };
38 38  
  39 +#if IS_ENABLED(CONFIG_DM_RESET)
39 40 static int sec_dsim_rstc_reset(struct reset_ctl_bulk *rstc, bool assert)
40 41 {
41 42 int ret;
... ... @@ -95,6 +96,7 @@
95 96  
96 97 return 0;
97 98 }
  99 +#endif
98 100  
99 101 static int imx_sec_dsim_attach(struct udevice *dev)
100 102 {
101 103  
102 104  
103 105  
104 106  
105 107  
... ... @@ -161,31 +163,35 @@
161 163 {
162 164 struct imx_sec_dsim_priv *priv = dev_get_priv(dev);
163 165 struct mipi_dsi_device *device = &priv->device;
164   - int ret;
165 166  
166 167 device->dev = dev;
167 168  
168   - sec_dsim_of_parse_resets(dev);
  169 +#if IS_ENABLED(CONFIG_DM_RESET)
  170 + int ret;
  171 + /* Allow to not have resets */
  172 + ret = sec_dsim_of_parse_resets(dev);
  173 + if (!ret) {
  174 + ret = sec_dsim_rstc_reset(&priv->soft_resetn, false);
  175 + if (ret) {
  176 + dev_err(dev, "deassert soft_resetn failed\n");
  177 + return ret;
  178 + }
169 179  
170   - ret = sec_dsim_rstc_reset(&priv->soft_resetn, false);
171   - if (ret) {
172   - dev_err(dev, "deassert soft_resetn failed\n");
173   - return ret;
174   - }
  180 + ret = sec_dsim_rstc_reset(&priv->clk_enable, true);
  181 + if (ret) {
  182 + dev_err(dev, "assert clk_enable failed\n");
  183 + return ret;
  184 + }
175 185  
176   - ret = sec_dsim_rstc_reset(&priv->clk_enable, true);
177   - if (ret) {
178   - dev_err(dev, "assert clk_enable failed\n");
179   - return ret;
  186 + ret = sec_dsim_rstc_reset(&priv->mipi_reset, false);
  187 + if (ret) {
  188 + dev_err(dev, "deassert mipi_reset failed\n");
  189 + return ret;
  190 + }
180 191 }
  192 +#endif
181 193  
182   - ret = sec_dsim_rstc_reset(&priv->mipi_reset, false);
183   - if (ret) {
184   - dev_err(dev, "deassert mipi_reset failed\n");
185   - return ret;
186   - }
187   -
188   - return ret;
  194 + return 0;
189 195 }
190 196  
191 197 static int imx_sec_dsim_remove(struct udevice *dev)
... ... @@ -213,6 +219,7 @@
213 219 static const struct udevice_id imx_sec_dsim_ids[] = {
214 220 { .compatible = "fsl,imx8mm-mipi-dsim" },
215 221 { .compatible = "fsl,imx8mn-mipi-dsim" },
  222 + { .compatible = "fsl,imx8mp-mipi-dsim" },
216 223 { }
217 224 };
218 225