Код драйвера в модуле ядра не выполняется?

Почему этот модуль ядра ничего не делает, когда я его загружаю?

#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>

#define DEVICE_NAME "hello-1.00.a"
#define DRIVER_NAME "hello"
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(struct platform_device *pdev){
    printk(KERN_ALERT "Hello, world\n");
    return 0;
}
static int hello_exit(struct platform_device *pdev){
    printk(KERN_ALERT "Goodbye, cruel world\n");
    return 0;
}

static const struct of_device_id myled_of_match[] =
{
    {.compatible = DEVICE_NAME},
    {},
};

MODULE_DEVICE_TABLE(of, myled_of_match);

static struct platform_driver hello_driver =
    {
        .driver = {
        .name = DRIVER_NAME,
        .owner = THIS_MODULE,
        .of_match_table = myled_of_match
    },
    .probe = hello_init,
    .remove = hello_exit
};

module_platform_driver(hello_driver);

Это должно принтHello, world\n, если я сделаюlsmod модуль кажется загруженным:

lsmod
hello_world 1538 0 - Live 0xbf000000 (O)

но ничего не печатается ни в консоли, ни вdmesg.

Если я используюmodule_init а такжеmodule_exit все работает, но мне нужен указательplatform_device *pdev на устройство, что я могу сделать?

РЕДАКТИРОВАТЬ:

оригинальный модуль выглядит так:

#include <linux/init.h>
#include <linux/module.h>

static int hello_init(void){
    printk(KERN_ALERT "Hello, world\n");
    return 0;
}

static void hello_exit(void){
    printk(KERN_ALERT "Goodbye, cruel world\n");
}


module_init(hello_init);
module_exit(hello_exit);

В моем устройстве дерева блобов присутствует эта запись:

hello {
    compatible = "dglnt,hello-1.00.a";
    reg = <0x41220000 0x10000>;
};

Ответы на вопрос(1)

Ваш ответ на вопрос