On Tue, Jan 31, 2023 at 01:59:45PM +0000, Sahin, Okan wrote: > On Tue, 31 Jan 2022 4:30 PM > Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > >On Tue, Jan 31, 2023 at 01:23:33PM +0000, Sahin, Okan wrote: > >> On Tue, 31 Jan 2022 3:27 PM > >> Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > >> >On Tue, Jan 31, 2023 at 09:27:48AM +0000, Sahin, Okan wrote: ... > >> >> Sorry for second question. I do not want to bother you, but I > >> >> realized that I need to be sure about driver_data before sending > >> >> new patch. You said that you need to use pointers directly for > >> >> driver_data then I fixed that part in mfd, but I do not need or > >> >> use driver_data in regulator since chip_id comes from mfd device so > >> >> I think using like below should be enough for my implementation. > >> >> > >> >> static const struct platform_device_id max77541_regulator_platform_id[] = > >{ > >> >> { "max77540-regulator", }, > >> >> { "max77541-regulator", }, > >> >> { /* sentinel */ } > >> >> }; > >> >> MODULE_DEVICE_TABLE(platform, max77541_regulator_platform_id); > >> >> > >> >> static const struct of_device_id max77541_regulator_of_id[] = { > >> >> { .compatible = "adi,max77540-regulator", }, > >> >> { .compatible = "adi,max77541-regulator", }, > >> >> { /* sentinel */ } > >> >> }; > >> >> MODULE_DEVICE_TABLE(of, max77541_regulator_of_id); > >> >> > >> >> What do you think? > >> > > >> >If you have got all necessary data from the upper layer, why do you > >> >need to have an ID table here? I'm not sure I understand how this OF > >> >ID table works in this case. > > > >> I added it since there is regulator node in device tree. With the help > >> of devm_regulator_register(..), driver takes parameters of regulator > >> node. I also used id to select and to initialize regulator descriptors > >> which are chip specific. So far there is no comment about OF ID table > >> so I kept it. I thought I need to add both of id table and platform id > >> table as name matching is required to initialize platform device from mfd. > > > >For platform device is one mechanism how to enumerate device, and bind it to > >the driver. The OF ID table needs to be present in case you are using it for direct > >DT enumeration (there is also something related to MFD child nodes, but you > >need to check and explain how your device is enumerated by this driver). > > > >I.o.w. please clarify how the OF ID table is being used. > > I do not use "of id table" directly in max77541-regulator.c so do I need to exclude it? Exactly my point. How does this OF ID table affect the device enumeration? > However, devm_regulator_register(..) method initialize each regulator with > the nodes under "regulators node". If of_match in desc and name of node > matches, then regulator will be initialized with parameters in the node under > the regulators node in the device tree. Since I am using device tree to > initialize regulators, I added of id table. I hope I explained the situation > clearly. This is confusing. If your regulator is enumerated via DT, why do you need MFD? -- With Best Regards, Andy Shevchenko