23.08.2020 21:16, Lubomir Rintel пишет: > Hello, ... >> +config MFD_ACER_A500_EC >> + tristate "Embedded Controller driver for Acer Iconia Tab A500" >> + depends on (I2C_TEGRA && ARCH_TEGRA_2x_SOC) || COMPILE_TEST > > This seems to also depend on I2C and OF. Perhaps I2C_TEGRA and > ARCH_TEGRA_2x_SOC imply that, but it could lead to build failures with > COMPILE_TEST=y. Hello, Lubomir! You're right about the I2C because it could be compiled as a loadable module, good catch! The OF seems should fine as-is. ... >> +static struct a500_ec *a500_ec_scratch; > > If this is only used for power_off, please rename it. I've been told to > do so in my driver: https://lore.kernel.org/lkml/20200519104933.GX271301@dell/ I don't mind to rename the variable, but not sure whether it will be a worthwhile change since _scratch is also a common naming scheme among MFD drivers. Please see max77620_scratch for example, which I added about a year ago. ... >> +int a500_ec_read_locked(struct a500_ec *ec_chip, >> + const struct a500_ec_cmd *cmd_desc) > > Any reason you're exporting these to the cell drivers instead of using > regmap? > > I think regmap would also help you with the locking if you set .lock() and > .unlock() callbacks in regmap_config. Yes, perhaps you're right. Right now I can't recall what stopped me from using regmap. I'll give it a shot for v2, thank you for the suggestion! ... >> +static struct notifier_block a500_ec_restart_handler = { >> + .notifier_call = a500_ec_restart_notify, >> + .priority = 200, > > What would happend if you didn't set priority explicitly? Then the Tegra's default CPU soft-reset handler will be used for rebooting [1]. [1] https://elixir.bootlin.com/linux/v5.9-rc1/source/drivers/soc/tegra/pmc.c#L977 ... >> +MODULE_LICENSE("GPL v2"); > > MODULE_LICENSE("GPL"); > > Your SPDX tag suggests newer versions of GPL than v2 are okay. Okay! I'll change this in v2, thanks. ... >> +#define A500_EC_COMMAND(NAME, CMD, DELAY_MS) \ >> +static const struct a500_ec_cmd A500_EC_##NAME = { \ >> + .cmd = CMD, \ >> + .post_delay = DELAY_MS, \ >> +}; \ > > I think that the mfd driver should decide about the delay, not the cell > drivers. This should be a good idea, especially combined with the regmap, thanks!