static int __init lirc_rpi_init_module(void) { int result; result = lirc_rpi_init(); if (result) return result; result = init_port(); if (result < 0) goto exit_rpi; driver.features = LIRC_CAN_SET_SEND_DUTY_CYCLE | LIRC_CAN_SET_SEND_CARRIER | LIRC_CAN_SEND_PULSE; driver.dev = &lirc_rpi_dev->dev; driver.minor = lirc_register_driver(&driver); if (driver.minor < 0) { printk(KERN_ERR LIRC_DRIVER_NAME ": device registration failed with %d\n", result); result = -EIO; goto exit_rpi; } printk(KERN_INFO LIRC_DRIVER_NAME ": driver registered!\n"); return 0; exit_rpi: lirc_rpi_exit(); return result; }
static void __exit lirc_rpi_exit_module(void) { gpio_free(gpio_out_pin); lirc_rpi_exit(); lirc_unregister_driver(driver.minor); printk(KERN_INFO LIRC_DRIVER_NAME ": cleaned up module\n"); }
static void __exit lirc_rpi_exit_module(void) { int i; lirc_unregister_driver(driver.minor); gpio_free(gpio_out_pin); for (i = 0; i < INPUT_PIN_NUM; i++) { gpio_free(gpio_in_pin[i]); } lirc_rpi_exit(); printk(KERN_INFO LIRC_DRIVER_NAME ": cleaned up module\n"); }