Hi Laurent,
- /*
* Decoder input LVDS format is a property of the decoder chip or even
* its strapping. Handle data-mapping the same way lvds-panel does. In
* case data-mapping is not present, do nothing, since there are still
* legacy bindings which do not specify this property.
The missing data-mapping property is reported as an error, but this comments says it is OK. Info?
It's not a fatal error, probe still continues in backward-compatibility mode. The message is there to tell that the DT should be updated. Would you downgrade that to a warning ?
Warning would IMO be better as this is not an error that stops it from working.
*/
- if (lvds_codec->connector_type != DRM_MODE_CONNECTOR_LVDS) {
bus_node = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0);
Are there any reg specified in the binding? If not then the second parameter should be -1 here.
Yes, the DT node has two ports, with port 0 being the input. For LVDS decoders, that's where the LVDS bus is.
OK.
if (!bus_node) {
dev_dbg(dev, "bus DT node not found\n");
return -ENXIO;
}
ret = of_property_read_string(bus_node, "data-mapping",
&mapping);
of_node_put(bus_node);
if (ret < 0) {
dev_err(dev, "missing 'data-mapping' DT property\n");
} else {
It would be nice with a helper for the below code if we need this a third time.
Where would you store it ?
drm_connector.c seems to be a good place. Or maybe a static inline in drm_connector.h.
if (!strcmp(mapping, "jeida-18")) {
lvds_codec->bus_format = MEDIA_BUS_FMT_RGB666_1X7X3_SPWG;
} else if (!strcmp(mapping, "jeida-24")) {
lvds_codec->bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA;
} else if (!strcmp(mapping, "vesa-24")) {
lvds_codec->bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG;
} else {
dev_err(dev, "invalid 'data-mapping' DT property\n");
return -EINVAL;
}
Sam