static int __init psoc4_cdrv_init(void) { int err; printk("psoc4 driver initializing\n"); /* Register SPI Driver */ err=psoc4_spi_init(); if(err) ERRGOTO(error, "Failed SPI Initialization\n"); /* Allocate chrdev region */ devno = MKDEV(psoc4_MAJOR, psoc4_MINOR); err = register_chrdev_region(devno, psoc4_DEVICE, "psoc4"); if(err) ERRGOTO(err_spi_init, "Failed registering char region (%d,%d) +%d, error %d\n", psoc4_MAJOR, psoc4_MINOR, psoc4_DEVICE, err); /* Register Char Device */ cdev_init(&psoc4Dev, &psoc4_Fops); err = cdev_add(&psoc4Dev, devno, psoc4_DEVICE); if (err) ERRGOTO(err_register, "Error %d adding psoc4 device\n", err); return 0; err_register: unregister_chrdev_region(devno, psoc4_DEVICE); err_spi_init: psoc4_spi_exit(); error: return err; }
/* Kernel Module Initialize method. This is run when inserting the module into the kernel */ static int __init candygun_cdrv_init(void) { int err; printk("candygun driver initializing\n"); /* Register SPI Driver */ err=candygun_spi_init(); if(err) ERRGOTO(error, "Failed SPI Initialization\n"); /* Allocate chrdev region */ if(alloc_chrdev_region(&devno, 0, NUM_OF_MINORS, "my_Spi_Device") < 0) { printk(KERN_DEBUG"Failed to allocate major and minor number"); ERRGOTO(err_spi_init, "Failed registering char region error %d\n", err); } /* Register Char Device */ cdev_init(&candygunDev, &candygun_Fops); candygunDev.owner = THIS_MODULE; err = cdev_add(&candygunDev, devno, 1); if (err != 0) { printk(KERN_ALERT "Failed to add cdev...\n"); ERRGOTO(err_register, "Error %d adding candy gun device\n", err); } /* Create class */ my_SPI_Device = class_create(THIS_MODULE, "my_SPI_Device"); if(my_SPI_Device == NULL) { printk(KERN_DEBUG"Failed to create class...\n"); ERRGOTO(err_spi_init, "Failed registering char region error %d\n", err); } /* Create device */ candygun = device_create(my_SPI_Device, NULL, devno, NULL, "candygun"); if(IS_ERR(candygun)) { printk(KERN_DEBUG"Failed to create device...\n"); ERRGOTO(err_spi_init, "Failed registering char region error %d\n", err); } return 0; /* Error Handling Region */ err_register: unregister_chrdev_region(devno, NUM_OF_MINORS); err_spi_init: candygun_spi_exit(); error: return err; }
static int __init ads7870_cdrv_init(void) { int err; printk("ads7870 driver initializing\n"); err=ads7870_spi_init(); if(err) ERRGOTO(error, "Failed SPI Initialization\n"); /* Allocate chrdev region */ devno = MKDEV(ADS7870_MAJOR, ADS7870_MINOR); err = register_chrdev_region(devno, NBR_ADC_CH, "ads7870"); if(err) ERRGOTO(err_spi_init, "Failed registering char region (%d,%d) +%d, error %d\n", ADS7870_MAJOR, ADS7870_MINOR, NBR_ADC_CH, err); /* Register Char Device */ cdev_init(&ads7870Dev, &ads7870_Fops); err = cdev_add(&ads7870Dev, devno, NBR_ADC_CH); if (err) ERRGOTO(err_register, "Error %d adding ADS7870 device\n", err); /* Configure ADS7870 according to data sheet */ ads7870_spi_write_reg8(ADS7870_REFOSC, ADS7870_REFOSC_OSCR | ADS7870_REFOSC_OSCE | ADS7870_REFOSC_REFE | ADS7870_REFOSC_BUFE | ADS7870_REFOSC_R2V); return 0; err_register: unregister_chrdev_region(devno, NBR_ADC_CH); err_spi_init: ads7870_spi_exit(); error: return err; }