Re: [PATCH v2 08/14] soundwire: Add Slave status handling helpers

From: Vinod Koul
Date: Thu Nov 16 2017 - 12:05:43 EST


On Thu, Nov 16, 2017 at 04:05:29PM +0000, Srinivas Kandagatla wrote:
>
> Minor Comment!
>
> On 10/11/17 11:49, Vinod Koul wrote:
> >From: Sanyog Kale <sanyog.r.kale@xxxxxxxxx>
> >
> >SoundWire Slaves report status to bus. Add helpers to handle
> >the status changes.
> >
> >Signed-off-by: Hardik T Shah <hardik.t.shah@xxxxxxxxx>
> >Signed-off-by: Sanyog Kale <sanyog.r.kale@xxxxxxxxx>
> >Signed-off-by: Vinod Koul <vinod.koul@xxxxxxxxx>
> >---
>
> >+static int sdw_compare_devid(struct sdw_slave *slave, struct sdw_slave_id id)
> >+{
> >+
> >+ if ((slave->id.unique_id != id.unique_id) ||
> >+ (slave->id.mfg_id != id.mfg_id) ||
> >+ (slave->id.part_id != id.part_id) ||
> >+ (slave->id.class_id != id.class_id))
> >+ return -ENODEV;
> >+
> >+ return 0;
> >+}
> >+
> >+/* called with bus_lock held */
> >+static int sdw_get_device_num(struct sdw_slave *slave)
> >+{
> If we use ida we would not need this function.

Not really, find_first_zero_bit and set_bit will be replaced by get_ida()

the bound check will still be required as we have finite set of ids to work
with. Nevertheless I will check if it helps in this case and move if
helpful.

> >+ int bit;
> >+
> >+ bit = find_first_zero_bit(slave->bus->assigned, SDW_MAX_DEVICES);
> >+ if (bit == SDW_MAX_DEVICES) {
> >+ bit = -ENODEV;
> >+ goto err;
> >+ }
> >+
> >+ /*
> >+ * Do not update dev_num in Slave data structure here,
> >+ * Update once program dev_num is successful
> >+ */
> >+ set_bit(bit, slave->bus->assigned);
> >+
> >+err:
> >+ return bit;
> >+}

--
~Vinod