Re: [PATCH v6 2/3] i3c: master: Extend address status bit to 4 and add I3C_ADDR_SLOT_EXT_DESIRED

From: Miquel Raynal
Date: Fri Oct 04 2024 - 12:23:07 EST


Hi Frank,

> > > @@ -1918,9 +1959,10 @@ static int i3c_master_bus_init(struct i3c_master_controller *master)
> > > goto err_rstdaa;
> > > }
> > >
> > > - i3c_bus_set_addr_slot_status(&master->bus,
> > > - i3cboardinfo->init_dyn_addr,
> > > - I3C_ADDR_SLOT_I3C_DEV);
> > > + i3c_bus_set_addr_slot_status_mask(&master->bus,
> > > + i3cboardinfo->init_dyn_addr,
> > > + I3C_ADDR_SLOT_I3C_DEV | I3C_ADDR_SLOT_EXT_DESIRED,
> > > + I3C_ADDR_SLOT_EXT_STATUS_MASK);
> >
> > However I'm not sure I understand the use of the
> > set_addr_slot_status_mask() function. Can't we just use the normal
> > function and just extend the mask in the fist place?
>
> The major purpose of set_addr_slot_status_mask() is that reduce code
> change. There are already address alloc/free by using I3C_ADDR_SLOT_FREE.
>
> we don't want i3c_bus_set_addr_slot_status() touch bit
> I3C_ADDR_SLOT_EXT_DESIRED since it was init at scan dts.

I agree, but in general you will never remove any "desired" slot, so
the "set status", besides at init time, should never touch these extra
bits?

> There are 18 place, using i3c_bus_set_addr_slot_status(), but we only need
> touch I3C_ADDR_SLOT_EXT_DESIRED bit when scan dts.
>

Thanks,
Miquèl