On 12/12/23 06:30, Charles Keepax wrote: > On Thu, Dec 07, 2023 at 04:29:34PM -0600, Pierre-Louis Bossart wrote: >> DP0 (Data Port 0) is very similar to regular data ports, with minor >> tweaks we can reuse the same code. >> >> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx> >> --- >> - dpn_prop = sdw_get_slave_dpn_prop(s_rt->slave, >> - s_rt->direction, >> - t_params->port_num); >> - if (!dpn_prop) >> - return -EINVAL; >> + if (t_params->port_num) { >> + struct sdw_dpn_prop *dpn_prop; >> + >> + dpn_prop = sdw_get_slave_dpn_prop(s_rt->slave, >> + s_rt->direction, >> + t_params->port_num); >> + if (!dpn_prop) >> + return -EINVAL; >> + >> + read_only_wordlength = dpn_prop->read_only_wordlength; >> + port_type = dpn_prop->type; >> + } else { >> + read_only_wordlength = false; >> + port_type = SDW_DPN_FULL; >> + } > > Would it be nicer to just add a special case sdw_get_slave_dpn_prop > to return dp0_prop and avoid all this special casing in the rest > of the code? There are multiple cases in the same function where we need to check for DP0. We could move the read_only_wordlength and port_type to the sdw_get_slave_dpn_prop() helper, but then we would spread the special cases in multiple locations. It's not pretty either way.