Hi, On 11/4/21 19:14, Andy Shevchenko wrote: > On Thu, Nov 04, 2021 at 03:49:48PM +0100, Hans de Goede wrote: >> On 11/2/21 00:43, Daniel Scally wrote: > > ... > >> Ok, I've figured this out now, with the attached patch (which also >> explains what is going on) as well as an updated tps68470_board_data.c >> with updated regulator_init_data for the VCM (also attached), the driver >> can now successfully talk to the VCM in probe() while we are NOT >> streaming from the ov8865. > > Thanks, Hans. > > ... > >> const struct int3472_tps68470_board_data *int3472_tps68470_get_board_data(const char *dev_name) >> { >> const struct int3472_tps68470_board_data *board_data; >> const struct dmi_system_id *match; >> >> match = dmi_first_match(int3472_tps68470_board_data_table); >> while (match) { >> board_data = match->driver_data; >> if (strcmp(board_data->dev_name, dev_name) == 0) >> return board_data; > >> dmi_first_match(++match); > > Not sure I understood the purpose of the call. You are right , that should have a "match = " in front of it, but I actually like this form found else where better: for (match = dmi_first_match(int3472_tps68470_board_data_table); match; match = dmi_first_match(match + 1)) { That IMHO makes the whole code a lot clearer, so I'll switch to that for the next version, thank you for catching this. Regards, Hans