Example #1
0
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;
}
Example #2
0
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");
}