Message ID | 20230502010759.17282-4-aford173@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: bridge: samsung-dsim: Support variable clocking | expand |
On 02.05.23 03:07, Adam Ford wrote: > Make the pll-clock-frequency optional. If it's present, use it > to maintain backwards compatibility with existing hardware. If it > is absent, read clock rate of "sclk_mipi" to determine the rate. > > Signed-off-by: Adam Ford <aford173@gmail.com> > Tested-by: Chen-Yu Tsai <wenst@chromium.org> Tested on Kontron BL i.MX8MM with SN65DSI84 and ADV7535 bridges. Tested-by: Frieder Schrempf <frieder.schrempf@kontron.de> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>
Am Dienstag, 2. Mai 2023, 03:07:55 CEST schrieb Adam Ford: > Make the pll-clock-frequency optional. If it's present, use it > to maintain backwards compatibility with existing hardware. If it > is absent, read clock rate of "sclk_mipi" to determine the rate. > > Signed-off-by: Adam Ford <aford173@gmail.com> > Tested-by: Chen-Yu Tsai <wenst@chromium.org> > --- > drivers/gpu/drm/bridge/samsung-dsim.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c > b/drivers/gpu/drm/bridge/samsung-dsim.c index bf4b33d2de76..2dc02a9e37c0 > 100644 > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct samsung_dsim > *dsi) { > struct device *dev = dsi->dev; > struct device_node *node = dev->of_node; > + struct clk *pll_clk; > int ret; > > ret = samsung_dsim_of_read_u32(node, "samsung,pll-clock-frequency", > &dsi->pll_clk_rate); > - if (ret < 0) > - return ret; > + > + /* If it doesn't exist, read it from the clock instead of failing */ > + if (ret < 0) { > + pll_clk = devm_clk_get(dev, "sclk_mipi"); > + if (!IS_ERR(pll_clk)) > + dsi->pll_clk_rate = clk_get_rate(pll_clk); > + else > + return PTR_ERR(pll_clk); > + } > Now that 'samsung,pll-clock-frequency' is optional the error in samsung_dsim_of_read_u32() should be changed. Otherwise you will get > /soc@0/bus@32c00000/dsi@32e10000: failed to get 'samsung,pll-clock- frequency' property Best regards, Alexander > ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock- frequency", > &dsi->burst_clk_rate);
On Thu, May 4, 2023 at 4:21 AM Alexander Stein <alexander.stein@ew.tq-group.com> wrote: > > Am Dienstag, 2. Mai 2023, 03:07:55 CEST schrieb Adam Ford: > > Make the pll-clock-frequency optional. If it's present, use it > > to maintain backwards compatibility with existing hardware. If it > > is absent, read clock rate of "sclk_mipi" to determine the rate. > > > > Signed-off-by: Adam Ford <aford173@gmail.com> > > Tested-by: Chen-Yu Tsai <wenst@chromium.org> > > --- > > drivers/gpu/drm/bridge/samsung-dsim.c | 12 ++++++++++-- > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c > > b/drivers/gpu/drm/bridge/samsung-dsim.c index bf4b33d2de76..2dc02a9e37c0 > > 100644 > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct samsung_dsim > > *dsi) { > > struct device *dev = dsi->dev; > > struct device_node *node = dev->of_node; > > + struct clk *pll_clk; > > int ret; > > > > ret = samsung_dsim_of_read_u32(node, "samsung,pll-clock-frequency", > > &dsi->pll_clk_rate); > > - if (ret < 0) > > - return ret; > > + > > + /* If it doesn't exist, read it from the clock instead of failing */ > > + if (ret < 0) { > > + pll_clk = devm_clk_get(dev, "sclk_mipi"); > > + if (!IS_ERR(pll_clk)) > > + dsi->pll_clk_rate = clk_get_rate(pll_clk); > > + else > > + return PTR_ERR(pll_clk); > > + } > > > > Now that 'samsung,pll-clock-frequency' is optional the error in > samsung_dsim_of_read_u32() should be changed. Otherwise you will get > > /soc@0/bus@32c00000/dsi@32e10000: failed to get 'samsung,pll-clock- > frequency' property I'll change the message from err to info with a message that reads "no samsung,pll-clock-frequency, using pixel clock" Does that work? adam > > Best regards, > Alexander > > > ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock- > frequency", > > &dsi->burst_clk_rate); > > > -- > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > Amtsgericht München, HRB 105018 > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > http://www.tq-group.com/ > >
Hi Adam, Am Donnerstag, 4. Mai 2023, 14:00:08 CEST schrieb Adam Ford: > On Thu, May 4, 2023 at 4:21 AM Alexander Stein > > <alexander.stein@ew.tq-group.com> wrote: > > Am Dienstag, 2. Mai 2023, 03:07:55 CEST schrieb Adam Ford: > > > Make the pll-clock-frequency optional. If it's present, use it > > > to maintain backwards compatibility with existing hardware. If it > > > is absent, read clock rate of "sclk_mipi" to determine the rate. > > > > > > Signed-off-by: Adam Ford <aford173@gmail.com> > > > Tested-by: Chen-Yu Tsai <wenst@chromium.org> > > > --- > > > > > > drivers/gpu/drm/bridge/samsung-dsim.c | 12 ++++++++++-- > > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c > > > b/drivers/gpu/drm/bridge/samsung-dsim.c index bf4b33d2de76..2dc02a9e37c0 > > > 100644 > > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > > @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct > > > samsung_dsim *dsi) { > > > > > > struct device *dev = dsi->dev; > > > struct device_node *node = dev->of_node; > > > > > > + struct clk *pll_clk; > > > > > > int ret; > > > > > > ret = samsung_dsim_of_read_u32(node, > > > "samsung,pll-clock-frequency", > > > > > > &dsi->pll_clk_rate); > > > > > > - if (ret < 0) > > > - return ret; > > > + > > > + /* If it doesn't exist, read it from the clock instead of failing > > > */ > > > + if (ret < 0) { > > > + pll_clk = devm_clk_get(dev, "sclk_mipi"); > > > + if (!IS_ERR(pll_clk)) > > > + dsi->pll_clk_rate = clk_get_rate(pll_clk); > > > + else > > > + return PTR_ERR(pll_clk); > > > + } > > > > Now that 'samsung,pll-clock-frequency' is optional the error in > > samsung_dsim_of_read_u32() should be changed. Otherwise you will get > > > > > /soc@0/bus@32c00000/dsi@32e10000: failed to get 'samsung,pll-clock- > > > > frequency' property > > I'll change the message from err to info with a message that reads "no > samsung,pll-clock-frequency, using pixel clock" > > Does that work? Having just a info is totally fine with me. Thanks. Although your suggested message somehow implies (to me) using pixel clock is just a fallback. I'm a bit concerned some might think "samsung,pll-clock- frequency" should be provided in DT. But this might just be me. Best regards, Alexander > adam > > > Best regards, > > Alexander > > > > > ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock- > > > > frequency", > > > > > &dsi->burst_clk_rate); > > > > -- > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > Amtsgericht München, HRB 105018 > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > http://www.tq-group.com/
On Thu, May 4, 2023 at 7:40 AM Alexander Stein <alexander.stein@ew.tq-group.com> wrote: > > Hi Adam, > > Am Donnerstag, 4. Mai 2023, 14:00:08 CEST schrieb Adam Ford: > > On Thu, May 4, 2023 at 4:21 AM Alexander Stein > > > > <alexander.stein@ew.tq-group.com> wrote: > > > Am Dienstag, 2. Mai 2023, 03:07:55 CEST schrieb Adam Ford: > > > > Make the pll-clock-frequency optional. If it's present, use it > > > > to maintain backwards compatibility with existing hardware. If it > > > > is absent, read clock rate of "sclk_mipi" to determine the rate. > > > > > > > > Signed-off-by: Adam Ford <aford173@gmail.com> > > > > Tested-by: Chen-Yu Tsai <wenst@chromium.org> > > > > --- > > > > > > > > drivers/gpu/drm/bridge/samsung-dsim.c | 12 ++++++++++-- > > > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c > > > > b/drivers/gpu/drm/bridge/samsung-dsim.c index bf4b33d2de76..2dc02a9e37c0 > > > > 100644 > > > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > > > @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct > > > > samsung_dsim *dsi) { > > > > > > > > struct device *dev = dsi->dev; > > > > struct device_node *node = dev->of_node; > > > > > > > > + struct clk *pll_clk; > > > > > > > > int ret; > > > > > > > > ret = samsung_dsim_of_read_u32(node, > > > > "samsung,pll-clock-frequency", > > > > > > > > &dsi->pll_clk_rate); > > > > > > > > - if (ret < 0) > > > > - return ret; > > > > + > > > > + /* If it doesn't exist, read it from the clock instead of failing > > > > */ > > > > + if (ret < 0) { > > > > + pll_clk = devm_clk_get(dev, "sclk_mipi"); > > > > + if (!IS_ERR(pll_clk)) > > > > + dsi->pll_clk_rate = clk_get_rate(pll_clk); > > > > + else > > > > + return PTR_ERR(pll_clk); > > > > + } > > > > > > Now that 'samsung,pll-clock-frequency' is optional the error in > > > samsung_dsim_of_read_u32() should be changed. Otherwise you will get > > > > > > > /soc@0/bus@32c00000/dsi@32e10000: failed to get 'samsung,pll-clock- > > > > > > frequency' property > > > > I'll change the message from err to info with a message that reads "no > > samsung,pll-clock-frequency, using pixel clock" > > > > Does that work? > > Having just a info is totally fine with me. Thanks. > Although your suggested message somehow implies (to me) using pixel clock is > just a fallback. I'm a bit concerned some might think "samsung,pll-clock- > frequency" should be provided in DT. But this might just be me. Oops, I got the PLL and burst burst clock confused. I think both burst-clock and pll clock messages should get updates. The pll clock should say something like "samsung,pll-clock-frequency not defined, using sclk_mipi" The imx8m n/m/p have the sclk_mipi defined in the device tree, and this patch allows them to not have to manually set the pll clock since it can be read. This allows to people to change the frequency of the PLL in in one place and let the driver read it instead of having to set the value in two places for the same clock. For the burst clock, I'd like to propose "samsung,burst-clock-frequency not defined, using pixel clock" Does that work for you? adam > frequency > > Best regards, > Alexander > > > adam > > > > > Best regards, > > > Alexander > > > > > > > ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock- > > > > > > frequency", > > > > > > > &dsi->burst_clk_rate); > > > > > > -- > > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > > Amtsgericht München, HRB 105018 > > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > > http://www.tq-group.com/ > > > -- > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > Amtsgericht München, HRB 105018 > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > http://www.tq-group.com/ > >
Am Donnerstag, 4. Mai 2023, 14:57:01 CEST schrieb Adam Ford: > On Thu, May 4, 2023 at 7:40 AM Alexander Stein > > <alexander.stein@ew.tq-group.com> wrote: > > Hi Adam, > > > > Am Donnerstag, 4. Mai 2023, 14:00:08 CEST schrieb Adam Ford: > > > On Thu, May 4, 2023 at 4:21 AM Alexander Stein > > > > > > <alexander.stein@ew.tq-group.com> wrote: > > > > Am Dienstag, 2. Mai 2023, 03:07:55 CEST schrieb Adam Ford: > > > > > Make the pll-clock-frequency optional. If it's present, use it > > > > > to maintain backwards compatibility with existing hardware. If it > > > > > is absent, read clock rate of "sclk_mipi" to determine the rate. > > > > > > > > > > Signed-off-by: Adam Ford <aford173@gmail.com> > > > > > Tested-by: Chen-Yu Tsai <wenst@chromium.org> > > > > > --- > > > > > > > > > > drivers/gpu/drm/bridge/samsung-dsim.c | 12 ++++++++++-- > > > > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > > > > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c > > > > > b/drivers/gpu/drm/bridge/samsung-dsim.c index > > > > > bf4b33d2de76..2dc02a9e37c0 > > > > > 100644 > > > > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > > > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > > > > @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct > > > > > samsung_dsim *dsi) { > > > > > > > > > > struct device *dev = dsi->dev; > > > > > struct device_node *node = dev->of_node; > > > > > > > > > > + struct clk *pll_clk; > > > > > > > > > > int ret; > > > > > > > > > > ret = samsung_dsim_of_read_u32(node, > > > > > "samsung,pll-clock-frequency", > > > > > > > > > > &dsi->pll_clk_rate); > > > > > > > > > > - if (ret < 0) > > > > > - return ret; > > > > > + > > > > > + /* If it doesn't exist, read it from the clock instead of > > > > > failing > > > > > */ > > > > > + if (ret < 0) { > > > > > + pll_clk = devm_clk_get(dev, "sclk_mipi"); > > > > > + if (!IS_ERR(pll_clk)) > > > > > + dsi->pll_clk_rate = clk_get_rate(pll_clk); > > > > > + else > > > > > + return PTR_ERR(pll_clk); > > > > > + } > > > > > > > > Now that 'samsung,pll-clock-frequency' is optional the error in > > > > samsung_dsim_of_read_u32() should be changed. Otherwise you will get > > > > > > > > > /soc@0/bus@32c00000/dsi@32e10000: failed to get 'samsung,pll-clock- > > > > > > > > frequency' property > > > > > > I'll change the message from err to info with a message that reads "no > > > samsung,pll-clock-frequency, using pixel clock" > > > > > > Does that work? > > > > Having just a info is totally fine with me. Thanks. > > Although your suggested message somehow implies (to me) using pixel clock > > is just a fallback. I'm a bit concerned some might think > > "samsung,pll-clock- frequency" should be provided in DT. But this might > > just be me. > > Oops, I got the PLL and burst burst clock confused. I think both > burst-clock and pll clock messages should get updates. > > The pll clock should say something like "samsung,pll-clock-frequency > not defined, using sclk_mipi" > > The imx8m n/m/p have the sclk_mipi defined in the device tree, and > this patch allows them to not have > to manually set the pll clock since it can be read. This allows to > people to change the frequency of the PLL in > in one place and let the driver read it instead of having to set the > value in two places for the same clock. That's why I would like to make it sound less error-like. How about "Using sclk_mipi for pll clock frequency"? > For the burst clock, I'd like to propose > "samsung,burst-clock-frequency not defined, using pixel clock" Similar to above how about "Using pixel clock for burst clock frequency"? > Does that work for you? But I'm okay with both ways. Up to you. Thanks and best regards, Alexander > > frequency > > > > > > Best regards, > > Alexander > > > > > adam > > > > > > > Best regards, > > > > Alexander > > > > > > > > > ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock- > > > > > > > > frequency", > > > > > > > > > &dsi->burst_clk_rate); > > > > > > > > -- > > > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > > > Amtsgericht München, HRB 105018 > > > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > > > http://www.tq-group.com/ > > > > -- > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > Amtsgericht München, HRB 105018 > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > http://www.tq-group.com/
On Thu, May 4, 2023 at 8:18 AM Alexander Stein <alexander.stein@ew.tq-group.com> wrote: > > Am Donnerstag, 4. Mai 2023, 14:57:01 CEST schrieb Adam Ford: > > On Thu, May 4, 2023 at 7:40 AM Alexander Stein > > > > <alexander.stein@ew.tq-group.com> wrote: > > > Hi Adam, > > > > > > Am Donnerstag, 4. Mai 2023, 14:00:08 CEST schrieb Adam Ford: > > > > On Thu, May 4, 2023 at 4:21 AM Alexander Stein > > > > > > > > <alexander.stein@ew.tq-group.com> wrote: > > > > > Am Dienstag, 2. Mai 2023, 03:07:55 CEST schrieb Adam Ford: > > > > > > Make the pll-clock-frequency optional. If it's present, use it > > > > > > to maintain backwards compatibility with existing hardware. If it > > > > > > is absent, read clock rate of "sclk_mipi" to determine the rate. > > > > > > > > > > > > Signed-off-by: Adam Ford <aford173@gmail.com> > > > > > > Tested-by: Chen-Yu Tsai <wenst@chromium.org> > > > > > > --- > > > > > > > > > > > > drivers/gpu/drm/bridge/samsung-dsim.c | 12 ++++++++++-- > > > > > > 1 file changed, 10 insertions(+), 2 deletions(-) > > > > > > > > > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c > > > > > > b/drivers/gpu/drm/bridge/samsung-dsim.c index > > > > > > bf4b33d2de76..2dc02a9e37c0 > > > > > > 100644 > > > > > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > > > > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > > > > > @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct > > > > > > samsung_dsim *dsi) { > > > > > > > > > > > > struct device *dev = dsi->dev; > > > > > > struct device_node *node = dev->of_node; > > > > > > > > > > > > + struct clk *pll_clk; > > > > > > > > > > > > int ret; > > > > > > > > > > > > ret = samsung_dsim_of_read_u32(node, > > > > > > "samsung,pll-clock-frequency", > > > > > > > > > > > > &dsi->pll_clk_rate); > > > > > > > > > > > > - if (ret < 0) > > > > > > - return ret; > > > > > > + > > > > > > + /* If it doesn't exist, read it from the clock instead of > > > > > > failing > > > > > > */ > > > > > > + if (ret < 0) { > > > > > > + pll_clk = devm_clk_get(dev, "sclk_mipi"); > > > > > > + if (!IS_ERR(pll_clk)) > > > > > > + dsi->pll_clk_rate = clk_get_rate(pll_clk); > > > > > > + else > > > > > > + return PTR_ERR(pll_clk); > > > > > > + } > > > > > > > > > > Now that 'samsung,pll-clock-frequency' is optional the error in > > > > > samsung_dsim_of_read_u32() should be changed. Otherwise you will get > > > > > > > > > > > /soc@0/bus@32c00000/dsi@32e10000: failed to get 'samsung,pll-clock- > > > > > > > > > > frequency' property > > > > > > > > I'll change the message from err to info with a message that reads "no > > > > samsung,pll-clock-frequency, using pixel clock" > > > > > > > > Does that work? > > > > > > Having just a info is totally fine with me. Thanks. > > > Although your suggested message somehow implies (to me) using pixel clock > > > is just a fallback. I'm a bit concerned some might think > > > "samsung,pll-clock- frequency" should be provided in DT. But this might > > > just be me. > > > > Oops, I got the PLL and burst burst clock confused. I think both > > burst-clock and pll clock messages should get updates. > > > > The pll clock should say something like "samsung,pll-clock-frequency > > not defined, using sclk_mipi" > > > > The imx8m n/m/p have the sclk_mipi defined in the device tree, and > > this patch allows them to not have > > to manually set the pll clock since it can be read. This allows to > > people to change the frequency of the PLL in > > in one place and let the driver read it instead of having to set the > > value in two places for the same clock. > > That's why I would like to make it sound less error-like. > How about "Using sclk_mipi for pll clock frequency"? > > > For the burst clock, I'd like to propose > > "samsung,burst-clock-frequency not defined, using pixel clock" > > Similar to above how about "Using pixel clock for burst clock frequency"? I like that. > > > Does that work for you? > > But I'm okay with both ways. Up to you. I'll wait another day or two to see if anyone else has any feedback, and I'll submit V4 with some other items addressed too. Thank you for your review! adam > > Thanks and best regards, > Alexander > > > > > frequency > > > > > > > > > Best regards, > > > Alexander > > > > > > > adam > > > > > > > > > Best regards, > > > > > Alexander > > > > > > > > > > > ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock- > > > > > > > > > > frequency", > > > > > > > > > > > &dsi->burst_clk_rate); > > > > > > > > > > -- > > > > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > > > > Amtsgericht München, HRB 105018 > > > > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > > > > http://www.tq-group.com/ > > > > > > -- > > > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > > > Amtsgericht München, HRB 105018 > > > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > > > http://www.tq-group.com/ > > > -- > TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany > Amtsgericht München, HRB 105018 > Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider > http://www.tq-group.com/ > >
diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c index bf4b33d2de76..2dc02a9e37c0 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1726,12 +1726,20 @@ static int samsung_dsim_parse_dt(struct samsung_dsim *dsi) { struct device *dev = dsi->dev; struct device_node *node = dev->of_node; + struct clk *pll_clk; int ret; ret = samsung_dsim_of_read_u32(node, "samsung,pll-clock-frequency", &dsi->pll_clk_rate); - if (ret < 0) - return ret; + + /* If it doesn't exist, read it from the clock instead of failing */ + if (ret < 0) { + pll_clk = devm_clk_get(dev, "sclk_mipi"); + if (!IS_ERR(pll_clk)) + dsi->pll_clk_rate = clk_get_rate(pll_clk); + else + return PTR_ERR(pll_clk); + } ret = samsung_dsim_of_read_u32(node, "samsung,burst-clock-frequency", &dsi->burst_clk_rate);