Hi All, Sorry for inconvenience. Kindly ignore the V1 series. V2 patch will be sent out accordingly. Thanks, Subbu > -----Original Message----- > From: Mohan, Subramanian <subramanian.mohan@xxxxxxxxx> > Sent: Tuesday, January 28, 2025 7:33 PM > To: linux-doc@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > Cc: giometti@xxxxxxxxxxxx; N, Pandith <pandith.n@xxxxxxxxx>; T R, Thejesh > Reddy <thejesh.reddy.t.r@xxxxxxxxx>; Zage, David <david.zage@xxxxxxxxx>; > Chinnadurai, Srinivasan <srinivasan.chinnadurai@xxxxxxxxx>; > rdunlap@xxxxxxxxxxxxx; bagasdotme@xxxxxxxxx; Mohan, Subramanian > <subramanian.mohan@xxxxxxxxx> > Subject: [PATCH 1/1] pps: retrieve generator specific data from framework > > From: Subramanian Mohan <subramanian.mohan@xxxxxxxxx> > > While adapting pps generator driver(tio generator as an example)to the new > generator framework, As part of driver registration the pps_gen_device > pointer is returned from framework. Due to which there is difficulty in getting > generator driver data back in enable function. we won’t be able to use > container_of macro as it results in static assert. we might end up in using static > pointer. To avoid the same and get back the generator driver data back we are > proposing generic approach to add drv_prv_data pointer inside the struct > pps_gen_source_info. > > Example TIO structure wrapped with pps_gen_device and usage. > > struct pps_tio { > /* Framework Related * / > struct pps_gen_source_info pps_tio_source_info > struct pps_gen_device *pps_gen; > > /* TIO Specific Data */ > }; > > static int pps_tio_enable(struct pps_gen_device *pps_gen, bool enable) { > > /* Getting TIO data back */ > /* Note: drv_prv_data will be initialized in our init routine */ > struct pps_tio *tio = pps_gen->info.drv_prv_data; > > /* Access tio members here to set some of the parameters */ > > return 0; > } > > Signed-off-by: Subramanian Mohan <subramanian.mohan@xxxxxxxxx> > --- > include/linux/pps_gen_kernel.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/include/linux/pps_gen_kernel.h b/include/linux/pps_gen_kernel.h > index 022ea0ac4440..8484bb2828ef 100644 > --- a/include/linux/pps_gen_kernel.h > +++ b/include/linux/pps_gen_kernel.h > @@ -35,6 +35,7 @@ struct pps_gen_source_info { > int (*get_time)(struct pps_gen_device *pps_gen, > struct timespec64 *time); > int (*enable)(struct pps_gen_device *pps_gen, bool enable); > + void *drv_prv_data; > > /* private: internal use only */ > struct module *owner; > -- > 2.35.3