Question on Platform Device/Driver

sanchayan maity victorascroft at
Sun Nov 10 07:20:10 EST 2013


Yes, i have read that. It says directly addressable but it's not like i can
access those addresses straight from user space. So how do i access them .
In the above case how do i access the register of the wm97 codec ic which
is on an AC97 bus?


Yes, wm97xx-core is a touch driver falling in the input subsystem. Though i
did not look at the input core, but, i guess the touch screen functionality
is provided that way as it includes the input.h file.

Your suggestion is not exactly clear. I understand i have to write a kernel
module. I guess the functions you are referring to are already exported by
that driver code.

For my case, i was interested in reading the ADC values using four
auxiliary ADC's provided by the WM97 codec IC. If you look at the driver
code file, it has a function for reading the WM97 registers as well as the
auxiliary ADC's. I wanted to use them.

My specific question is how do i write a driver using this wm97xx_core.c to
read the auxiliary ADC's?

My general question will be how does a device use a platform driver to
provide any kind of read write functionality access to it's register or any
other functionality.

A character driver provides explicit read write functions which are used
through an open /dev node. How do i do something similar using a platform
driver like the one above?

Thanks & Regards,

On Sun, Nov 10, 2013 at 2:02 AM, anish singh <anish198519851985 at>wrote:

> On Nov 9, 2013 4:18 AM, "sanchayan maity" <victorascroft at> wrote:
> >
> > Can someone give me some pointers or tell me as to how can one use a
> platform driver for reading and writing?
> >
> > For example, if i have a wm97xx codec IC, a core platform driver is
> provided (as on the below link).
> >
> This is a touch driver\input driver.
> So this driver comes under input subsystem.It interacts with input core to
> send events to it using report api's.
> >
> > If i wanted to use this core driver to read the auxilary ADC's of wm97xx
> codec how do i go about using the register read, write functions or read
> auxiliary adc functions provided by this driver file?
> What is the original problem you are trying to solve?You can do read\write
> just by a small hack.Write a kernel module and make the read\write function
> in this driver as exported.Use those in your own driver but make sure you
> export other variables also to give the right inputs for those api's.I am
> sure you are just looking for writing a device driver by doing an actual
> read\write.Remember this will just be a bad code i.e. hack.
> >
> > I have gone through the documentation provided here
> but it
> is still not clear to me. I understand the concept of why a platform driver
> is required and how each device registers itself with the pseudo platform
> bus, but, i do not understand how to use such a driver or make my driver
> based on it and then use it for reading/writing.
> >
> > I understand character device drivers but, i am at a loss when it comes
> to understand these platform drivers. I come from embedded domain and these
> drivers seem are ubiquitous.
> >
> > Thanks.
> >
> > _______________________________________________
> > Kernelnewbies mailing list
> > Kernelnewbies at
> >
> >
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Kernelnewbies mailing list