int __init button_init(void) { dprintk("initializing ...\n"); if(button_dev_init() != 0) return 1; return 0; }
static int __init aotom_init_module(void) { int i; dprintk(5, "%s >\n", __func__); printk("Fulan front panel driver\n"); // sema_init(&display_sem,1); sema_init(&button_sem, 1); if(YWPANEL_VFD_Init(&mode_digit)) { printk("unable to init module\n"); return -1; } VFD_clr(); if(button_dev_init() != 0) return -1; if (register_chrdev(VFD_MAJOR,"VFD",&vfd_fops)) printk("unable to get major %d for VFD\n",VFD_MAJOR); sema_init(&write_sem, 1); // sema_init(&key_mutex, 1); for (i = 0; i < LASTMINOR; i++) sema_init(&FrontPanelOpen[i].sem, 1); own_proc_dir = create_proc_entry(NAME_DIR, S_IFDIR | S_IRWXUGO, NULL); if (own_proc_dir == NULL ) { printk(KERN_ERR "can't create /proc/%s\n", NAME_DIR); return -ENOMEM; } dprintk(5, "Create /proc/%s\n", NAME_DIR); own_proc_dir->gid =0 ; own_proc_node=create_proc_entry(NAME_NODE, S_IFREG | S_IRUGO | S_IWUGO, own_proc_dir); if (own_proc_node == NULL ) { printk(KERN_ERR "can't create /proc/%s/%s\n", NAME_DIR, NAME_NODE); return -ENOMEM; } dprintk(5, "Create /proc/%s/%s\n", NAME_DIR, NAME_NODE); own_proc_node->uid = 0; own_proc_node->gid =0 ; own_proc_node->read_proc=proc_node_read; dprintk(5, "%s <\n", __func__); return 0; }
static int __init aotom_init_module(void) { int i; dprintk(5, "%s >\n", __func__); printk("Fulan front panel driver\n"); if(YWPANEL_VFD_Init()) { printk("unable to init module\n"); return -1; } VFD_clr(); if(button_dev_init() != 0) return -1; if (register_chrdev(VFD_MAJOR,"VFD",&vfd_fops)) printk("unable to get major %d for VFD\n",VFD_MAJOR); if (pm_power_off) printk("pm_power_off hook already applied! Do not register anything\n"); else pm_power_off = aotom_standby; sema_init(&write_sem, 1); sema_init(&receive_sem, 1); sema_init(&draw_thread_sem, 1); for (i = 0; i < LASTMINOR; i++) { FrontPanelOpen[i].open_count = 0; FrontPanelOpen[i].minor = i; } for (i = 0; i < LASTLED; i++) { led_state[i].state = LOG_OFF; led_state[i].period = 0; led_state[i].stop = 1; sema_init(&led_state[i].led_sem, 0); led_state[i].led_task = kthread_run(led_thread, (void *) i, "led_thread"); } dprintk(5, "%s <\n", __func__); return 0; }