Hi all,
I've got a digital IO board sitting on a ISA bus in an industrial x86
computer. I've got a simple driver with ioctl interface for toggling the
IO pins Hi and Low and it works fine.
Now I'm about to develop a bitbanging SPI driver with the use of
drivers/spi/spi_bitbang.c. Unfortunately I don't understand how to glue
it with my IO driver, more precisely - how to register a new SPI driver.
The other modules in drivers/spi seem to use platform_driver_register()
or spi_register_driver() to get their blah_probe() called and then they
go from there. However, whatever I tried, my _probe() method never gets
called. The module is as simple as this (remove/exit methods omitted
from this email):
static int inro_spi_probe(struct spi_device *dev)
{
printk(KERN_INFO PFX "inro_spi_probe() called\n");
return -ENODEV;
}
static struct spi_driver inro_spi_drv = {
.probe = inro_spi_probe,
.driver = { .name = "inro_spi", .owner = THIS_MODULE, },
};
static int __init inro_spi_init(void)
{
printk(KERN_INFO PFX "inro_spi_init() called\n");
return spi_register_driver(&inro_spi_drv);
}
module_init(inro_spi_init);
I tried spi_register_driver() as well as platform_driver_register() both
to no avail. I assume I'd need some support in xxx_platform_data for
platform_driver_register() to work but since we're running an unmodified
Debian kernel on x86 I can't do that. What needs to be done for
spi_register_driver() to call my _probe() I have no idea.
So my question is how to register/init the module and make it available
to the SPI subsystem? I somehow can't figure it out :-(
Thanks for any hints!
Michal
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ