On Tue, Feb 20, 2024 at 3:47 AM Zhi Mao <zhi.mao@xxxxxxxxxxxx> wrote: > > Add a V4L2 sub-device driver for Galaxycore GC08A3 image sensor. ... > +#include <asm/unaligned.h> Usually asm/* go after linux/* > +#include <linux/clk.h> > +#include <linux/delay.h> > +#include <linux/gpio/consumer.h> > +#include <linux/i2c.h> > +#include <linux/module.h> > +#include <linux/pm_runtime.h> > +#include <linux/regulator/consumer.h> This looks semi-random. For example, _at least_ the array_size.h, bits.h, container_of.h, device.h, err.h, mod_devicetable.h, property.h, types.h are missing, Please, use IWYU principle. ... > +#define GC08A3_DEFAULT_CLK_FREQ 24000000 HZ_PER_MHZ ? ... > +#define GC08A3_SLEEP_US 2000 USEC_PER_MSEC ? ... > +static const s64 gc08a3_link_freq_menu_items[] = { > + 336000000ULL, > + 207000000ULL, HZ_PER_MHZ ? > +}; ... > +static const struct dev_pm_ops gc08a3_pm_ops = { > + SET_RUNTIME_PM_OPS(gc08a3_power_off, gc08a3_power_on, NULL) > +}; > + .pm = &gc08a3_pm_ops, Use new PM macros (pm_ptr() and friends). -- With Best Regards, Andy Shevchenko