Commit b99d90b3417926533f62ac27dab2dacdcdbd95f3
1 parent
bde53dbc5b
Exists in
smarc_8mq-imx_v2020.04_5.4.24_2.1.0
and in
1 other branch
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 |