On Friday, 24 January 2025 00:01:38 EST Dmitry Baryshkov wrote: > On Thu, Jan 23, 2025 at 05:28:06PM -0500, Detlev Casanova wrote: > > From: Sugar Zhang <sugar.zhang@xxxxxxxxxxxxxx> > > > > Register the dw-hdmi-qp bridge driver as an HDMI audio codec. > > > > The register values computation functions (for n) are based on the > > downstream driver, as well as the register writing functions. > > > > The driver uses the generic HDMI Codec framework in order to implement > > the HDMI audio support. > > > > Signed-off-by: Sugar Zhang <sugar.zhang@xxxxxxxxxxxxxx> > > Signed-off-by: Detlev Casanova <detlev.casanova@xxxxxxxxxxxxx> > > --- > > > > drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 424 +++++++++++++++++++ > > 1 file changed, 424 insertions(+) > > > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c > > b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c index > > b281cabfe992e..f79d38de4c6c4 100644 > > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c > > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c > > @@ -36,6 +36,66 @@ > > > > #define SCRAMB_POLL_DELAY_MS 3000 > > > > +/* > > + * Unless otherwise noted, entries in this table are 100% optimization. > > + * Values can be obtained from hdmi_compute_n() but that function is > > + * slow so we pre-compute values we expect to see. > > + * > > + * All 32k and 48k values are expected to be the same (due to the way > > + * the math works) for any rate that's an exact kHz. > > + */ > > +static const struct dw_hdmi_audio_tmds_n { > > + unsigned long tmds; > > + unsigned int n_32k; > > + unsigned int n_44k1; > > + unsigned int n_48k; > > +} common_tmds_n_table[] = { > > + { .tmds = 25175000, .n_32k = 4096, .n_44k1 = 12854, .n_48k = 6144, }, > > + { .tmds = 25200000, .n_32k = 4096, .n_44k1 = 5656, .n_48k = 6144, }, > > These values do not seem to match the tables in HDMI, Appendix D. Is > there any reason for that?