* [PATCH 0/3] drm/bridge: sii902x: fix audio mclk management @ 2019-07-02 15:47 Olivier Moysan 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan ` (2 more replies) 0 siblings, 3 replies; 13+ messages in thread From: Olivier Moysan @ 2019-07-02 15:47 UTC (permalink / raw) To: a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, olivier.moysan, jsarha, robh+dt, mark.rutland, devicetree Fix audio master clock use for Silab sii902x HDMI transceiver. Make audio master clock optional, as this clock is not mandatory. Olivier Moysan (3): drm/bridge: sii902x: fix missing reference to mclk clock dt-bindings: display: sii902x: Change audio mclk binding drm/bridge: sii902x: make audio mclk optional .../devicetree/bindings/display/bridge/sii902x.txt | 5 ++- drivers/gpu/drm/bridge/sii902x.c | 40 +++++++++++++--------- 2 files changed, 26 insertions(+), 19 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock 2019-07-02 15:47 [PATCH 0/3] drm/bridge: sii902x: fix audio mclk management Olivier Moysan @ 2019-07-02 15:47 ` Olivier Moysan 2019-07-04 8:03 ` Jyri Sarha ` (2 more replies) 2019-07-02 15:47 ` [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding Olivier Moysan 2019-07-02 15:47 ` [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional Olivier Moysan 2 siblings, 3 replies; 13+ messages in thread From: Olivier Moysan @ 2019-07-02 15:47 UTC (permalink / raw) To: a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, olivier.moysan, jsarha, robh+dt, mark.rutland, devicetree Add devm_clk_get call to retrieve reference to master clock. Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") Signed-off-by: Olivier Moysan <olivier.moysan@st.com> --- drivers/gpu/drm/bridge/sii902x.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c index dd7aa466b280..36acc256e67e 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -750,6 +750,7 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, sii902x->audio.i2s_fifo_sequence[i] |= audio_fifo_id[i] | i2s_lane_id[lanes[i]] | SII902X_TPI_I2S_FIFO_ENABLE; + sii902x->audio.mclk = devm_clk_get(dev, "mclk"); if (IS_ERR(sii902x->audio.mclk)) { dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", __func__, PTR_ERR(sii902x->audio.mclk)); -- 2.7.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan @ 2019-07-04 8:03 ` Jyri Sarha 2019-07-05 12:24 ` Philippe CORNU 2019-07-12 10:31 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Jyri Sarha @ 2019-07-04 8:03 UTC (permalink / raw) To: Olivier Moysan, a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, robh+dt, mark.rutland, devicetree On 02/07/2019 18:47, Olivier Moysan wrote: > Add devm_clk_get call to retrieve reference to master clock. > > Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> Reviewed-by: Jyri Sarha <jsarha@ti.com> I wonder how that line was dropped and how the code past my final test. Any way, this fix is definitely needed. Thanks, Jyri > --- > drivers/gpu/drm/bridge/sii902x.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c > index dd7aa466b280..36acc256e67e 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -750,6 +750,7 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, > sii902x->audio.i2s_fifo_sequence[i] |= audio_fifo_id[i] | > i2s_lane_id[lanes[i]] | SII902X_TPI_I2S_FIFO_ENABLE; > > + sii902x->audio.mclk = devm_clk_get(dev, "mclk"); > if (IS_ERR(sii902x->audio.mclk)) { > dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > __func__, PTR_ERR(sii902x->audio.mclk)); > -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan 2019-07-04 8:03 ` Jyri Sarha @ 2019-07-05 12:24 ` Philippe CORNU 2019-07-12 10:31 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Philippe CORNU @ 2019-07-05 12:24 UTC (permalink / raw) To: Olivier MOYSAN, a.hajda@samsung.com, narmstrong@baylibre.com, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@siol.net, airlied@linux.ie, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Benjamin GAIGNARD, Alexandre TORGUE, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, jsarha@ti.com, robh+dt@kernel.org, mark.rutland@arm.com Hi Olivier, and many thanks for your patch. I do not see how audio could work without your patch, so: Reviewed-by: Philippe Cornu <philippe.cornu@st.com> Philippe :-) On 7/2/19 5:47 PM, Olivier Moysan wrote: > Add devm_clk_get call to retrieve reference to master clock. > > Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> > --- > drivers/gpu/drm/bridge/sii902x.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c > index dd7aa466b280..36acc256e67e 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -750,6 +750,7 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, > sii902x->audio.i2s_fifo_sequence[i] |= audio_fifo_id[i] | > i2s_lane_id[lanes[i]] | SII902X_TPI_I2S_FIFO_ENABLE; > > + sii902x->audio.mclk = devm_clk_get(dev, "mclk"); > if (IS_ERR(sii902x->audio.mclk)) { > dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > __func__, PTR_ERR(sii902x->audio.mclk)); > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan 2019-07-04 8:03 ` Jyri Sarha 2019-07-05 12:24 ` Philippe CORNU @ 2019-07-12 10:31 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Andrzej Hajda @ 2019-07-12 10:31 UTC (permalink / raw) To: Olivier Moysan, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, jsarha, robh+dt, mark.rutland, devicetree On 02.07.2019 17:47, Olivier Moysan wrote: > Add devm_clk_get call to retrieve reference to master clock. > > Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> > --- > drivers/gpu/drm/bridge/sii902x.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c > index dd7aa466b280..36acc256e67e 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -750,6 +750,7 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, > sii902x->audio.i2s_fifo_sequence[i] |= audio_fifo_id[i] | > i2s_lane_id[lanes[i]] | SII902X_TPI_I2S_FIFO_ENABLE; > > + sii902x->audio.mclk = devm_clk_get(dev, "mclk"); > if (IS_ERR(sii902x->audio.mclk)) { > dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > __func__, PTR_ERR(sii902x->audio.mclk)); Acked-by: Andrzej Hajda <a.hajda@samsung.com> -- Regards Andrzej ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding 2019-07-02 15:47 [PATCH 0/3] drm/bridge: sii902x: fix audio mclk management Olivier Moysan 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan @ 2019-07-02 15:47 ` Olivier Moysan 2019-07-04 8:25 ` Jyri Sarha ` (2 more replies) 2019-07-02 15:47 ` [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional Olivier Moysan 2 siblings, 3 replies; 13+ messages in thread From: Olivier Moysan @ 2019-07-02 15:47 UTC (permalink / raw) To: a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, olivier.moysan, jsarha, robh+dt, mark.rutland, devicetree As stated in SiL9022/24 datasheet, master clock is not required for I2S. Make mclk property optional in DT bindings. Fixes: 3f18021f43a3 ("dt-bindings: display: sii902x: Add HDMI audio bindings") Signed-off-by: Olivier Moysan <olivier.moysan@st.com> --- Documentation/devicetree/bindings/display/bridge/sii902x.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/display/bridge/sii902x.txt b/Documentation/devicetree/bindings/display/bridge/sii902x.txt index 2df44b7d3821..6e14e087c0d0 100644 --- a/Documentation/devicetree/bindings/display/bridge/sii902x.txt +++ b/Documentation/devicetree/bindings/display/bridge/sii902x.txt @@ -26,9 +26,8 @@ Optional properties: - clocks: phandle and clock specifier for each clock listed in the clock-names property - clock-names: "mclk" - Describes SII902x MCLK input. MCLK is used to produce - HDMI audio CTS values. This property is required if - "#sound-dai-cells"-property is present. This property follows + Describes SII902x MCLK input. MCLK can be used to produce + HDMI audio CTS values. This property follows Documentation/devicetree/bindings/clock/clock-bindings.txt consumer binding. -- 2.7.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding 2019-07-02 15:47 ` [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding Olivier Moysan @ 2019-07-04 8:25 ` Jyri Sarha 2019-07-05 12:35 ` Philippe CORNU 2019-07-12 10:31 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Jyri Sarha @ 2019-07-04 8:25 UTC (permalink / raw) To: Olivier Moysan, a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, robh+dt, mark.rutland, devicetree On 02/07/2019 18:47, Olivier Moysan wrote: > As stated in SiL9022/24 datasheet, master clock is not required for I2S. > Make mclk property optional in DT bindings. > > Fixes: 3f18021f43a3 ("dt-bindings: display: sii902x: Add HDMI audio bindings") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> Looking the specs again it looks like the mclk is requred for sii9020, but not for sii9022 and sii9024. So I guess it is fine to accept the configurations without the mclk. Reviewed-by: Jyri Sarha <jsarha@ti.com> > --- > Documentation/devicetree/bindings/display/bridge/sii902x.txt | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/bridge/sii902x.txt b/Documentation/devicetree/bindings/display/bridge/sii902x.txt > index 2df44b7d3821..6e14e087c0d0 100644 > --- a/Documentation/devicetree/bindings/display/bridge/sii902x.txt > +++ b/Documentation/devicetree/bindings/display/bridge/sii902x.txt > @@ -26,9 +26,8 @@ Optional properties: > - clocks: phandle and clock specifier for each clock listed in > the clock-names property > - clock-names: "mclk" > - Describes SII902x MCLK input. MCLK is used to produce > - HDMI audio CTS values. This property is required if > - "#sound-dai-cells"-property is present. This property follows > + Describes SII902x MCLK input. MCLK can be used to produce > + HDMI audio CTS values. This property follows > Documentation/devicetree/bindings/clock/clock-bindings.txt > consumer binding. > > -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding 2019-07-02 15:47 ` [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding Olivier Moysan 2019-07-04 8:25 ` Jyri Sarha @ 2019-07-05 12:35 ` Philippe CORNU 2019-07-12 10:31 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Philippe CORNU @ 2019-07-05 12:35 UTC (permalink / raw) To: Olivier MOYSAN, a.hajda@samsung.com, narmstrong@baylibre.com, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@siol.net, airlied@linux.ie, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Benjamin GAIGNARD, Alexandre TORGUE, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, jsarha@ti.com, robh+dt@kernel.org, mark.rutland@arm.com Hi Olivier, and many thanks for your patch. I have double checked in the sil9022/24 datasheet and you are right: "As an option, the original MCLK signal used to strobe the I2S signals out from the sourcing chip can be used. If the internal PLL is used, then an external MCLK input is not required." So, even if #sound-dai-cells is there, this is not mandatory to have MCLK. Reviewed-by: Philippe Cornu <philippe.cornu@st.com> Philippe :-) On 7/2/19 5:47 PM, Olivier Moysan wrote: > As stated in SiL9022/24 datasheet, master clock is not required for I2S. > Make mclk property optional in DT bindings. > > Fixes: 3f18021f43a3 ("dt-bindings: display: sii902x: Add HDMI audio bindings") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> > --- > Documentation/devicetree/bindings/display/bridge/sii902x.txt | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/bridge/sii902x.txt b/Documentation/devicetree/bindings/display/bridge/sii902x.txt > index 2df44b7d3821..6e14e087c0d0 100644 > --- a/Documentation/devicetree/bindings/display/bridge/sii902x.txt > +++ b/Documentation/devicetree/bindings/display/bridge/sii902x.txt > @@ -26,9 +26,8 @@ Optional properties: > - clocks: phandle and clock specifier for each clock listed in > the clock-names property > - clock-names: "mclk" > - Describes SII902x MCLK input. MCLK is used to produce > - HDMI audio CTS values. This property is required if > - "#sound-dai-cells"-property is present. This property follows > + Describes SII902x MCLK input. MCLK can be used to produce > + HDMI audio CTS values. This property follows > Documentation/devicetree/bindings/clock/clock-bindings.txt > consumer binding. > > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding 2019-07-02 15:47 ` [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding Olivier Moysan 2019-07-04 8:25 ` Jyri Sarha 2019-07-05 12:35 ` Philippe CORNU @ 2019-07-12 10:31 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Andrzej Hajda @ 2019-07-12 10:31 UTC (permalink / raw) To: Olivier Moysan, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, jsarha, robh+dt, mark.rutland, devicetree On 02.07.2019 17:47, Olivier Moysan wrote: > As stated in SiL9022/24 datasheet, master clock is not required for I2S. > Make mclk property optional in DT bindings. > > Fixes: 3f18021f43a3 ("dt-bindings: display: sii902x: Add HDMI audio bindings") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> > --- > Documentation/devicetree/bindings/display/bridge/sii902x.txt | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/display/bridge/sii902x.txt b/Documentation/devicetree/bindings/display/bridge/sii902x.txt > index 2df44b7d3821..6e14e087c0d0 100644 > --- a/Documentation/devicetree/bindings/display/bridge/sii902x.txt > +++ b/Documentation/devicetree/bindings/display/bridge/sii902x.txt > @@ -26,9 +26,8 @@ Optional properties: > - clocks: phandle and clock specifier for each clock listed in > the clock-names property > - clock-names: "mclk" > - Describes SII902x MCLK input. MCLK is used to produce > - HDMI audio CTS values. This property is required if > - "#sound-dai-cells"-property is present. This property follows > + Describes SII902x MCLK input. MCLK can be used to produce > + HDMI audio CTS values. This property follows > Documentation/devicetree/bindings/clock/clock-bindings.txt > consumer binding. > Acked-by: Andrzej Hajda <a.hajda@samsung.com> -- Regards Andrzej ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional 2019-07-02 15:47 [PATCH 0/3] drm/bridge: sii902x: fix audio mclk management Olivier Moysan 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan 2019-07-02 15:47 ` [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding Olivier Moysan @ 2019-07-02 15:47 ` Olivier Moysan 2019-07-04 8:29 ` Jyri Sarha ` (2 more replies) 2 siblings, 3 replies; 13+ messages in thread From: Olivier Moysan @ 2019-07-02 15:47 UTC (permalink / raw) To: a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, olivier.moysan, jsarha, robh+dt, mark.rutland, devicetree The master clock on i2s bus is not mandatory, as sii902X internal PLL can be used instead. Make use of mclk optional. Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") Signed-off-by: Olivier Moysan <olivier.moysan@st.com> --- drivers/gpu/drm/bridge/sii902x.c | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c index 36acc256e67e..a08bd9fdc046 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -562,19 +562,21 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, } } - ret = clk_prepare_enable(sii902x->audio.mclk); - if (ret) { - dev_err(dev, "Enabling mclk failed: %d\n", ret); - return ret; - } + if (sii902x->audio.mclk) { + ret = clk_prepare_enable(sii902x->audio.mclk); + if (ret) { + dev_err(dev, "Enabling mclk failed: %d\n", ret); + return ret; + } - mclk_rate = clk_get_rate(sii902x->audio.mclk); + mclk_rate = clk_get_rate(sii902x->audio.mclk); - ret = sii902x_select_mclk_div(&i2s_config_reg, params->sample_rate, - mclk_rate); - if (mclk_rate != ret * params->sample_rate) - dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", - mclk_rate, ret, params->sample_rate); + ret = sii902x_select_mclk_div(&i2s_config_reg, + params->sample_rate, mclk_rate); + if (mclk_rate != ret * params->sample_rate) + dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", + mclk_rate, ret, params->sample_rate); + } mutex_lock(&sii902x->mutex); @@ -640,7 +642,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, mutex_unlock(&sii902x->mutex); if (ret) { - clk_disable_unprepare(sii902x->audio.mclk); + if (sii902x->audio.mclk) + clk_disable_unprepare(sii902x->audio.mclk); dev_err(dev, "%s: hdmi audio enable failed: %d\n", __func__, ret); } @@ -659,7 +662,8 @@ static void sii902x_audio_shutdown(struct device *dev, void *data) mutex_unlock(&sii902x->mutex); - clk_disable_unprepare(sii902x->audio.mclk); + if (sii902x->audio.mclk) + clk_disable_unprepare(sii902x->audio.mclk); } int sii902x_audio_digital_mute(struct device *dev, void *data, bool enable) @@ -752,9 +756,12 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, sii902x->audio.mclk = devm_clk_get(dev, "mclk"); if (IS_ERR(sii902x->audio.mclk)) { - dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", - __func__, PTR_ERR(sii902x->audio.mclk)); - return 0; + if (PTR_ERR(sii902x->audio.mclk) != -ENOENT) { + dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", + __func__, PTR_ERR(sii902x->audio.mclk)); + return PTR_ERR(sii902x->audio.mclk); + } + sii902x->audio.mclk = NULL; } sii902x->audio.pdev = platform_device_register_data( -- 2.7.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional 2019-07-02 15:47 ` [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional Olivier Moysan @ 2019-07-04 8:29 ` Jyri Sarha 2019-07-05 12:36 ` Philippe CORNU 2019-07-12 10:45 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Jyri Sarha @ 2019-07-04 8:29 UTC (permalink / raw) To: Olivier Moysan, a.hajda, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, robh+dt, mark.rutland, devicetree On 02/07/2019 18:47, Olivier Moysan wrote: > The master clock on i2s bus is not mandatory, > as sii902X internal PLL can be used instead. > Make use of mclk optional. > > Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> Reviewed-by: Jyri Sarha <jsarha@ti.com> > --- > drivers/gpu/drm/bridge/sii902x.c | 39 +++++++++++++++++++++++---------------- > 1 file changed, 23 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c > index 36acc256e67e..a08bd9fdc046 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -562,19 +562,21 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, > } > } > > - ret = clk_prepare_enable(sii902x->audio.mclk); > - if (ret) { > - dev_err(dev, "Enabling mclk failed: %d\n", ret); > - return ret; > - } > + if (sii902x->audio.mclk) { > + ret = clk_prepare_enable(sii902x->audio.mclk); > + if (ret) { > + dev_err(dev, "Enabling mclk failed: %d\n", ret); > + return ret; > + } > > - mclk_rate = clk_get_rate(sii902x->audio.mclk); > + mclk_rate = clk_get_rate(sii902x->audio.mclk); > > - ret = sii902x_select_mclk_div(&i2s_config_reg, params->sample_rate, > - mclk_rate); > - if (mclk_rate != ret * params->sample_rate) > - dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", > - mclk_rate, ret, params->sample_rate); > + ret = sii902x_select_mclk_div(&i2s_config_reg, > + params->sample_rate, mclk_rate); > + if (mclk_rate != ret * params->sample_rate) > + dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", > + mclk_rate, ret, params->sample_rate); > + } > > mutex_lock(&sii902x->mutex); > > @@ -640,7 +642,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, > mutex_unlock(&sii902x->mutex); > > if (ret) { > - clk_disable_unprepare(sii902x->audio.mclk); > + if (sii902x->audio.mclk) > + clk_disable_unprepare(sii902x->audio.mclk); > dev_err(dev, "%s: hdmi audio enable failed: %d\n", __func__, > ret); > } > @@ -659,7 +662,8 @@ static void sii902x_audio_shutdown(struct device *dev, void *data) > > mutex_unlock(&sii902x->mutex); > > - clk_disable_unprepare(sii902x->audio.mclk); > + if (sii902x->audio.mclk) > + clk_disable_unprepare(sii902x->audio.mclk); > } > > int sii902x_audio_digital_mute(struct device *dev, void *data, bool enable) > @@ -752,9 +756,12 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, > > sii902x->audio.mclk = devm_clk_get(dev, "mclk"); > if (IS_ERR(sii902x->audio.mclk)) { > - dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > - __func__, PTR_ERR(sii902x->audio.mclk)); > - return 0; > + if (PTR_ERR(sii902x->audio.mclk) != -ENOENT) { > + dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > + __func__, PTR_ERR(sii902x->audio.mclk)); > + return PTR_ERR(sii902x->audio.mclk); > + } > + sii902x->audio.mclk = NULL; > } > > sii902x->audio.pdev = platform_device_register_data( > -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional 2019-07-02 15:47 ` [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional Olivier Moysan 2019-07-04 8:29 ` Jyri Sarha @ 2019-07-05 12:36 ` Philippe CORNU 2019-07-12 10:45 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Philippe CORNU @ 2019-07-05 12:36 UTC (permalink / raw) To: Olivier MOYSAN, a.hajda@samsung.com, narmstrong@baylibre.com, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@siol.net, airlied@linux.ie, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Benjamin GAIGNARD, Alexandre TORGUE, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com, jsarha@ti.com, robh+dt@kernel.org, mark.rutland@arm.com Hi Olivier, and many thanks for your patch. Reviewed-by: Philippe Cornu <philippe.cornu@st.com> Philippe :-) On 7/2/19 5:47 PM, Olivier Moysan wrote: > The master clock on i2s bus is not mandatory, > as sii902X internal PLL can be used instead. > Make use of mclk optional. > > Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> > --- > drivers/gpu/drm/bridge/sii902x.c | 39 +++++++++++++++++++++++---------------- > 1 file changed, 23 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c > index 36acc256e67e..a08bd9fdc046 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -562,19 +562,21 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, > } > } > > - ret = clk_prepare_enable(sii902x->audio.mclk); > - if (ret) { > - dev_err(dev, "Enabling mclk failed: %d\n", ret); > - return ret; > - } > + if (sii902x->audio.mclk) { > + ret = clk_prepare_enable(sii902x->audio.mclk); > + if (ret) { > + dev_err(dev, "Enabling mclk failed: %d\n", ret); > + return ret; > + } > > - mclk_rate = clk_get_rate(sii902x->audio.mclk); > + mclk_rate = clk_get_rate(sii902x->audio.mclk); > > - ret = sii902x_select_mclk_div(&i2s_config_reg, params->sample_rate, > - mclk_rate); > - if (mclk_rate != ret * params->sample_rate) > - dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", > - mclk_rate, ret, params->sample_rate); > + ret = sii902x_select_mclk_div(&i2s_config_reg, > + params->sample_rate, mclk_rate); > + if (mclk_rate != ret * params->sample_rate) > + dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", > + mclk_rate, ret, params->sample_rate); > + } > > mutex_lock(&sii902x->mutex); > > @@ -640,7 +642,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, > mutex_unlock(&sii902x->mutex); > > if (ret) { > - clk_disable_unprepare(sii902x->audio.mclk); > + if (sii902x->audio.mclk) > + clk_disable_unprepare(sii902x->audio.mclk); > dev_err(dev, "%s: hdmi audio enable failed: %d\n", __func__, > ret); > } > @@ -659,7 +662,8 @@ static void sii902x_audio_shutdown(struct device *dev, void *data) > > mutex_unlock(&sii902x->mutex); > > - clk_disable_unprepare(sii902x->audio.mclk); > + if (sii902x->audio.mclk) > + clk_disable_unprepare(sii902x->audio.mclk); > } > > int sii902x_audio_digital_mute(struct device *dev, void *data, bool enable) > @@ -752,9 +756,12 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, > > sii902x->audio.mclk = devm_clk_get(dev, "mclk"); > if (IS_ERR(sii902x->audio.mclk)) { > - dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > - __func__, PTR_ERR(sii902x->audio.mclk)); > - return 0; > + if (PTR_ERR(sii902x->audio.mclk) != -ENOENT) { > + dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > + __func__, PTR_ERR(sii902x->audio.mclk)); > + return PTR_ERR(sii902x->audio.mclk); > + } > + sii902x->audio.mclk = NULL; > } > > sii902x->audio.pdev = platform_device_register_data( > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional 2019-07-02 15:47 ` [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional Olivier Moysan 2019-07-04 8:29 ` Jyri Sarha 2019-07-05 12:36 ` Philippe CORNU @ 2019-07-12 10:45 ` Andrzej Hajda 2 siblings, 0 replies; 13+ messages in thread From: Andrzej Hajda @ 2019-07-12 10:45 UTC (permalink / raw) To: Olivier Moysan, narmstrong, Laurent.pinchart, jonas, jernej.skrabec, airlied, daniel, dri-devel, linux-kernel, benjamin.gaignard, alexandre.torgue, linux-arm-kernel, linux-stm32, jsarha, robh+dt, mark.rutland, devicetree On 02.07.2019 17:47, Olivier Moysan wrote: > The master clock on i2s bus is not mandatory, > as sii902X internal PLL can be used instead. > Make use of mclk optional. > > Fixes: ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support") > > Signed-off-by: Olivier Moysan <olivier.moysan@st.com> > --- > drivers/gpu/drm/bridge/sii902x.c | 39 +++++++++++++++++++++++---------------- > 1 file changed, 23 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c > index 36acc256e67e..a08bd9fdc046 100644 > --- a/drivers/gpu/drm/bridge/sii902x.c > +++ b/drivers/gpu/drm/bridge/sii902x.c > @@ -562,19 +562,21 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, > } > } > > - ret = clk_prepare_enable(sii902x->audio.mclk); > - if (ret) { > - dev_err(dev, "Enabling mclk failed: %d\n", ret); > - return ret; > - } > + if (sii902x->audio.mclk) { > + ret = clk_prepare_enable(sii902x->audio.mclk); > + if (ret) { > + dev_err(dev, "Enabling mclk failed: %d\n", ret); > + return ret; > + } > > - mclk_rate = clk_get_rate(sii902x->audio.mclk); > + mclk_rate = clk_get_rate(sii902x->audio.mclk); > > - ret = sii902x_select_mclk_div(&i2s_config_reg, params->sample_rate, > - mclk_rate); > - if (mclk_rate != ret * params->sample_rate) > - dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", > - mclk_rate, ret, params->sample_rate); > + ret = sii902x_select_mclk_div(&i2s_config_reg, > + params->sample_rate, mclk_rate); > + if (mclk_rate != ret * params->sample_rate) > + dev_dbg(dev, "Inaccurate reference clock (%ld/%d != %u)\n", > + mclk_rate, ret, params->sample_rate); > + } > > mutex_lock(&sii902x->mutex); > > @@ -640,7 +642,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data, > mutex_unlock(&sii902x->mutex); > > if (ret) { > - clk_disable_unprepare(sii902x->audio.mclk); > + if (sii902x->audio.mclk) > + clk_disable_unprepare(sii902x->audio.mclk); "if" clause is not necessary > dev_err(dev, "%s: hdmi audio enable failed: %d\n", __func__, > ret); > } > @@ -659,7 +662,8 @@ static void sii902x_audio_shutdown(struct device *dev, void *data) > > mutex_unlock(&sii902x->mutex); > > - clk_disable_unprepare(sii902x->audio.mclk); > + if (sii902x->audio.mclk) ditto > + clk_disable_unprepare(sii902x->audio.mclk); > } > > int sii902x_audio_digital_mute(struct device *dev, void *data, bool enable) > @@ -752,9 +756,12 @@ static int sii902x_audio_codec_init(struct sii902x *sii902x, > > sii902x->audio.mclk = devm_clk_get(dev, "mclk"); > if (IS_ERR(sii902x->audio.mclk)) { > - dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > - __func__, PTR_ERR(sii902x->audio.mclk)); > - return 0; > + if (PTR_ERR(sii902x->audio.mclk) != -ENOENT) { > + dev_err(dev, "%s: No clock (audio mclk) found: %ld\n", > + __func__, PTR_ERR(sii902x->audio.mclk)); > + return PTR_ERR(sii902x->audio.mclk); > + } > + sii902x->audio.mclk = NULL; devm_clk_get_optional should be used here. Summarizing, clk framework supports NULL clocks so you can adjust code to benefit from it: no need to checks "if (sii902x->audio.mclk)". The only place you should care is near clk_get_rate, for null clock it will return 0, so you should react appropriately. With that changed: Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> -- Regards Andrzej > } > > sii902x->audio.pdev = platform_device_register_data( ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2019-07-12 10:45 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-07-02 15:47 [PATCH 0/3] drm/bridge: sii902x: fix audio mclk management Olivier Moysan 2019-07-02 15:47 ` [PATCH 1/3] drm/bridge: sii902x: fix missing reference to mclk clock Olivier Moysan 2019-07-04 8:03 ` Jyri Sarha 2019-07-05 12:24 ` Philippe CORNU 2019-07-12 10:31 ` Andrzej Hajda 2019-07-02 15:47 ` [PATCH 2/3] dt-bindings: display: sii902x: Change audio mclk binding Olivier Moysan 2019-07-04 8:25 ` Jyri Sarha 2019-07-05 12:35 ` Philippe CORNU 2019-07-12 10:31 ` Andrzej Hajda 2019-07-02 15:47 ` [PATCH 3/3] drm/bridge: sii902x: make audio mclk optional Olivier Moysan 2019-07-04 8:29 ` Jyri Sarha 2019-07-05 12:36 ` Philippe CORNU 2019-07-12 10:45 ` Andrzej Hajda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).