.of_match_table на Debian 5
От: Harvat  
Дата: 15.07.19 12:06
Оценка:
Доброго времени суток.

Я пишу драйвер на Debian 5 работающий на MPC8308.
Интересует меня работа с dma.
Нашёл пример:
https://github.com/torvalds/linux/blob/master/drivers/dma/mpc512x_dma.c
Но в моей версии Linux в device.h структура device_driver имеет следующий вид:
struct device_driver {
    const char        *name;
    struct bus_type        *bus;

    struct module        *owner;
    const char         *mod_name;    /* used for built-in modules */

    int (*probe) (struct device *dev);
    int (*remove) (struct device *dev);
    void (*shutdown) (struct device *dev);
    int (*suspend) (struct device *dev, pm_message_t state);
    int (*resume) (struct device *dev);
    struct attribute_group **groups;

    struct dev_pm_ops *pm;

    struct driver_private *p;
};

Т.е. в ней нет of_match_table.
Скорее всего мой драйвер не стартует по этой причине.
Приведу краткий текст:
static const struct of_device_id fsldma_of_ids[] = {
    { .compatible = "fsl,elo3-dma", },
    { .compatible = "fsl,eloplus-dma", },
    { .compatible = "fsl,elo-dma", },
    {}
};
MODULE_DEVICE_TABLE(of, fsldma_of_ids);

static int mpc_dma_probe(struct platform_device *op)
{
    printk("1414134134q f1q c2r");
    struct device *dev = &op->dev;
    dev_err(dev, "Error mapping IRQ!\n");
    return 0;
}

static int mpc_dma_remove(struct platform_device *op)
{
    return 0;
}

#define DRV_NAME    "mpc512x_dma4"

static const struct of_device_id mpc_dma_match[] = {
    { .compatible = "fsl,mpc5121-dma", },
    { .compatible = "fsl,mpc8308-dma", },
    {},
};

MODULE_DEVICE_TABLE(of, mpc_dma_match);
#include <linux/device.h>
static struct platform_driver mpc_dma_driver = {
    .probe        = mpc_dma_probe,
    .remove        = mpc_dma_remove,
    .driver = {
        .name = DRV_NAME,
    }
};
module_platform_driver(mpc_dma_driver);

int init_module_( void )
{
    printk(KERN_INFO  "Hi \n");
    printk(KERN_INFO "PID = %u \n", PID);
    int ret = 0;

    return platform_driver_register(&mpc_dma_driver);
}
void cleanup_module_( void )
{
    printk(KERN_INFO  "Bye");
}

MODULE_LICENSE("GPL");
MODULE_AUTHOR("888888888");
MODULE_DESCRIPTION("Interrupt hooker");
MODULE_SUPPORTED_DEVICE("KBF");
module_init(init_module_);
module_exit(cleanup_module_);


Собственно текста "1414134134q f1q c2r" в dmesg никогда не вижу.
файл драйвера лежит в /lib/modules/2.6.29.6-rt23/kernel
Загружаю драйвер так:
modprobe main
Подскажите пожалуйста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.