On Thu, Jun 2, 2022 at 2:07 PM szuni chen szunichen@gmail.com wrote:
Andy Shevchenko andy.shevchenko@gmail.com 於 2022年6月1日 週三 下午5:57寫道:
On Tue, May 31, 2022 at 1:32 PM ChiaEn Wu peterwu.pub@gmail.com wrote:
...
const char * const states[] = { "off", "keep", "on" };
const char *str;
int ret;
if (!fwnode_property_read_string(init_data->fwnode,
"default-state", &str)) {
ret = match_string(states, ARRAY_SIZE(states), str);
if (ret < 0)
ret = STATE_OFF;
led->default_state = ret;
}
fwnode_property_match_string()?
Sorry, but I think the use of this function is different from my target. I want to read the string of the "default-state" property and figure out if the string is in the states array. But the fwnode_property_match_string aimed to figure out if the state in the property array. One is a property array and another one is a state array.
Ah, indeed. Nevertheless you may reduce the code base by doing like the following (I wonder what your code do if there is no default-state property):
led->default_state = STATE_OFF; // it's by default off since kzalloc(), so I don't see why we need this line at all.
fwnode_property_read_string(init_data->fwnode, "default-state", &str); ret = match_string(states, ARRAY_SIZE(states), str); if (ret >= 0) led->default_state = ret;