On Fri, May 15, 2026 at 11:02:09AM +0200, Javier Martinez Canillas wrote:
> +static enum drm_mode_status
> +it66121_bridge_hdmi_tmds_char_rate_valid(const struct drm_bridge *bridge,
> + const struct drm_display_mode *mode,
> + unsigned long long tmds_rate)
> +{
> + const struct it66121_ctx *ctx =
> + container_of(bridge, const struct it66121_ctx, bridge);
> + unsigned long max_clock;
> +
> + max_clock = (ctx->bus_width == 12) ? 74250 : 148500;
> +
> + if (mode->clock > max_clock)
> + return MODE_CLOCK_HIGH;
> +
> + if (mode->clock < 25000)
> + return MODE_CLOCK_LOW;
> +
> + return MODE_OK;
> +}
You must not use mode->clock here, use the tdms_rate passed as an argument.
> static irqreturn_t it66121_irq_threaded_handler(int irq, void *dev_id)
> @@ -1588,7 +1615,10 @@ static int it66121_probe(struct i2c_client *client)
>
> ctx->bridge.of_node = dev->of_node;
> ctx->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
> - ctx->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID;
> + ctx->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID |
> + DRM_BRIDGE_OP_HDMI;
> + ctx->bridge.vendor = "ITE";
> + ctx->bridge.product = "IT66121";
> if (client->irq > 0) {
> ctx->bridge.ops |= DRM_BRIDGE_OP_HPD;
It's not really for today, but ideally we should move to the audio
helpers at some point too.
Maxime
signature.asc
Description: PGP signature
