Re: "driver model" confusion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 22, 2009 at 9:59 AM, Michal Ludvig <mludvig@xxxxxxxxxxxx> wrote:
> 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):
>

>From here:

http://www.mjmwired.net/kernel/Documentation/spi/spi-summary

it seemed that SPI's internal is very much board specifics, so perhaps
u would like let us know the board identity?

http://www.linuxforums.org/forum/linux-kernel/143191-question-about-adding-spi-driver-support.html

This following is a board-specific howto:

http://www.at91.com/samphpbb/viewtopic.php?f=12&t=18280


>        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.
>

check dmesg, is there anything indicating existing kernel already is
able to detect the hardware?

>
> 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
>



-- 
Regards,
Peter Teoh

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux