Search code examples
linuxlinux-kernellinux-device-driverhotplugging

Detect the presence of a device when it's hot plugged in Linux


I am running the SPI code on the panda board and I want to know which function in the code is responsible for detecting the device when it's hot plugged.

Can somebody with the background of embedded systems, Linux device drivers and/or spi please answer my question?


Solution

  • This is the line in your code that does the magic:

    1286 MODULE_DEVICE_TABLE(of, omap_mcspi_of_match);
    

    Process:
    1. Driver for each device exposes its information using the API MODULE_DEVICE_TABLE. Each device has a unique vendor Id and device Id.
    2. At compilation time, the build process extracts this information out of the driver and builds a table.
    3. When the device is plugged in, the kernel checks this device table to see if any driver is available for the particular Vendor/Device Id. If yes then it loads that driver and initializes the device.


    Read following articles for more info:

    1. http://www.linux-mag.com/id/2617/
    2. http://www.linuxjournal.com/node/5604/print