Hi, On 5/22/24 9:48 AM, Hans de Goede wrote: > +static int __init ts_parse_props(char *str) > +{ > + char *name, *value; > + u32 u32val; > + int i, ret; > + > + /* > + * str is part of the static_command_line from init/main.c and poking > + * holes in that by writing 0 to it is allowed, as is taking long > + * lasting references to it. > + */ > + ts_cmdline_data.acpi_name = strsep(&str, ","); > + > + for (i = 0; i < MAX_CMDLINE_PROPS; i++) { > + name = strsep(&str, ","); > + if (!name) > + break; > + > + /* Replace '=' with 0 and make value point past '=' or NULL */ > + value = name; > + strsep(&value, "="); > + if (!value) { > + ts_cmdline_props[i] = PROPERTY_ENTRY_BOOL(name); > + } else if (isdigit(value[0])) { > + ret = kstrtou32(value, 10, &u32val); > + if (ret) > + return ret; > + > + ts_cmdline_props[i] = PROPERTY_ENTRY_U32(name, u32val); > + } else { > + ts_cmdline_props[i] = PROPERTY_ENTRY_STRING(name, value); > + } > + } > + > + if (!i) > + return -EINVAL; /* No properties specified */ > + > + if (str) > + return -ENOSPC; /* More then MAX_CMDLINE_PROPS properties specified */ > + > + ts_data = &ts_cmdline_data; > + return 0; > +} > +__setup("i2c_touchscreen_props=", ts_parse_props); __setup() is different from early_param() & its family. __setup() functions return 1 for "handled" and 0 for "not handled". See include/linux/init.h. -- #Randy https://people.kernel.org/tglx/notes-about-netiquette https://subspace.kernel.org/etiquette.html