Hi Zhi, On Tue, Jan 09, 2024 at 10:41:15AM +0000, Zhi Mao (毛智) wrote: > > > +static const char *const gc08a3_supply_name[] = { > > > +"avdd", > > > +"dvdd", > > > +"dovdd", > > > +}; > > > + > > > +#define GC08A3_NUM_SUPPLIES ARRAY_SIZE(gc08a3_supply_name) > > > > Please use ARRAY_SIZE(...) directly. > > > [mtk]: About "ARRAY_SIZE", creating a macro with a descriptive name can > improve readability of code, especially when it is used in multiple > locations in codes. and it seems a common usage in sensor drivers. Can > we keep this usage in gc08a3 driver? It improves readability even more if you use ARRAY_SIZE() directly as then it's easy to see you're dealing with a single array. GC08A3_NUM_SUPPLIES is thus a useless definition. ... > > > +static int gc08a3_g_mbus_config(struct v4l2_subdev *sd, unsigned > > int pad, > > > +struct v4l2_mbus_config *config) > > > +{ > > > +config->type = V4L2_MBUS_CSI2_DPHY; > > > +config->bus.mipi_csi2.num_data_lanes = 4; > > > +config->bus.mipi_csi2.flags = 0; > > > +return 0; > > > +} > > > > As you return a static configuration, there's no need to implement > > g_mbus_config(). > > > [mtk]: we can not remove this function, because meidatek ISP driver > will use this interface to get some information. Please fix the Mediatek ISP driver in that case. I'm also open to adding a V4L2 framework function to obtain the number of lanes (and other configuration) for an upstream sub-device, either using the local endpoint or g_mbus_config if the sub-device driver implements that. -- Regards, Sakari Ailus