On Tue, 18 Jan 2022 19:06:20 +0200 Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > On Mon, Jan 17, 2022 at 8:41 AM Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > > On Tue, 11 Jan 2022 13:59:19 +0200 > > Cristian Pop <cristian.pop@xxxxxxxxxx> wrote: > > > > + st->labels = devm_kzalloc(device, sizeof(*st->labels) * child_num, GFP_KERNEL); > > > + if (!st->labels) > > > + return -ENOMEM; > > > + > > > + i = child_num; > > > + fwnode_for_each_child_node(fwnode, child) { > > > + if (fwnode_property_read_u32(child, "reg", &crt_ch)) > > > + continue; > > > + > > > + if (crt_ch >= num_channels) > > > + continue; > > > + > > > + if (fwnode_property_read_string(child, "label", &label)) > > > + continue; > > > + > > > + chan = &channels[crt_ch]; > > ? Not used. > > > > > + st->labels[--i] = label; > > > I've no idea how this works... Should be looking for the chan->channel > > value as that's what your read uses to index. > > It's an implicit memcpy(). Not that. What I don't follow is how it ends up in the right element of st->labels[] seeing as i has nothing to do with reg which should be the channel number. Far as I can see it's setting the labels in a random order. Jonathan > > > > + } > > > + > > > + return 0; > > > +} > > >