Re: passing function pointers through platform devices?

Paul Sokolovsky
2007-03-07T17:11:29Z

Hello NZG,

Tuesday, March 6, 2007, 8:46:29 PM, you wrote:

> I'm developing an SPI- bus >MMC/SD block driver translation layer.
> As part of this layer the write protect and card detect lines need to be read.
> The method for determining the state of these lines will be board specific.

> Is it appropriate to pass a function pointer through a platform device
> (declared in the mach initialization) to implement card_available and
> write_protect function calls?
> Or is there a cleaner way to do it?

Apparently it must be appropriate, because that's pretty natural
and clean - if you can pass data, why wouldn't you be able to pass
methods?

I assume your usecase is to pass board-specific code, defined in
machine definition, down to a device driver. We (handhelds.org) go
even further and recently tried passing function pointers in opposite
direction - from device driver to client code which will use the
device, via device's platform_data.

That essentially implements virtual methods on devices, allowing
device clients to perform operations on them without bothering to know
how actually the operation is implemented, i.e. offers better
functionality separation and code reuse which OOP offers.

Either way, be assured that you're not the only one who puts Linux
Driver Model under full use.

> thank you,
> NZG

--
Best regards,
Paul mailto:pmiscml@gmail.com