[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <80f05939-1cc8-e435-138d-b2f519c3b407@ideasonboard.com>
Date: Tue, 16 May 2023 16:02:37 +0300
From: Tomi Valkeinen <tomi.valkeinen@...asonboard.com>
To: Ludwig Zenz <lzenz@...electronics.com>
Cc: Matti.Vaittinen@...rohmeurope.com, andriy.shevchenko@...el.com,
andriy.shevchenko@...ux.intel.com, broonie@...nel.org,
devicetree@...r.kernel.org, hverkuil@...all.nl, khalasa@...p.pl,
krzysztof.kozlowski+dt@...aro.org,
laurent.pinchart+renesas@...asonboard.com, lgirdwood@...il.com,
linux-i2c@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-media@...r.kernel.org, luca.ceresoli@...tlin.com,
m.tretter@...gutronix.de, marex@...x.de, mchehab@...nel.org,
mpagano@...too.org, peda@...ntia.se, robh+dt@...nel.org,
sakari.ailus@...ux.intel.com, satish.nagireddy@...cruise.com,
wsa@...nel.org
Subject: Re: [PATCH v13 6/8] media: i2c: add DS90UB960 driver
Hi,
On 16/05/2023 15:35, Ludwig Zenz wrote:
> On Wed, 26 Apr 2023 14:51:12 +0300, Tomi Valkeinen wrote:
>
> [...]
>
>> +static int ub960_configure_ports_for_streaming(struct ub960_data *priv,
>> + struct v4l2_subdev_state *state)
>> +{
>> + u8 fwd_ctl;
>> + struct {
>> + u32 num_streams;
>> + u8 pixel_dt;
>> + u8 meta_dt;
>> + u32 meta_lines;
>> + u32 tx_port;
>> + } rx_data[UB960_MAX_RX_NPORTS] = {};
>> + u8 vc_map[UB960_MAX_RX_NPORTS] = {};
>> + struct v4l2_subdev_route *route;
>> + unsigned int nport;
>> + int ret;
>> +
>> + ret = ub960_validate_stream_vcs(priv);
>> + if (ret)
>> + return ret;
>> +
>> + ub960_get_vc_maps(priv, state, vc_map);
>> +
>> + for_each_active_route(&state->routing, route) {
>> + struct ub960_rxport *rxport;
>> + struct ub960_txport *txport;
>> + struct v4l2_mbus_framefmt *fmt;
>> + const struct ub960_format_info *ub960_fmt;
>> + unsigned int nport;
>> +
>> + nport = ub960_pad_to_port(priv, route->sink_pad);
>> +
>> + rxport = priv->rxports[nport];
>> + if (!rxport)
>> + return -EINVAL;
>> +
>> + txport = priv->txports[ub960_pad_to_port(priv, route->source_pad)];
>> + if (!txport)
>> + return -EINVAL;
>> +
>> + rx_data[nport].tx_port = ub960_pad_to_port(priv, route->source_pad);
>> +
>> + rx_data[nport].num_streams++;
>> +
>> + /* For the rest, we are only interested in parallel busses */
>> + if (rxport->rx_mode == RXPORT_MODE_CSI2_SYNC ||
>> + rxport->rx_mode == RXPORT_MODE_CSI2_ASYNC)
>> + continue;
>> +
>> + if (rx_data[nport].num_streams > 2)
>> + return -EPIPE;
>> +
>> + fmt = v4l2_subdev_state_get_stream_format(state,
>> + route->sink_pad,
>> + route->sink_stream);
>> + if (!fmt)
>> + return -EPIPE;
>> +
>> + ub960_fmt = ub960_find_format(fmt->code);
>> + if (!ub960_fmt)
>> + return -EPIPE;
>> +
>> + if (ub960_fmt->meta) {
>> + if (fmt->height > 3) {
>> + dev_err(&priv->client->dev,
>> + "rx%u: unsupported metadata height %u\n",
>> + nport, fmt->height);
>> + return -EPIPE;
>> + }
>> +
>> + rx_data[nport].meta_dt = ub960_fmt->datatype;
>> + rx_data[nport].meta_lines = fmt->height;
>> + } else {
>> + rx_data[nport].pixel_dt = ub960_fmt->datatype;
>> + }
>> + }
>> +
>> + /* Configure RX ports */
>> +
>> + fwd_ctl = 0;
>
> Hello, I have only used the first RX port in my setup (ds90ub933 to ds90ub964). The logic for activating/deactivating the Rx ports did not work for me. My suggestion is:
Why doesn't it work? What happens?
Tomi
Powered by blists - more mailing lists