Changeset 11406


Ignore:
Timestamp:
2008-06-08T10:21:20+02:00 (9 years ago)
Author:
blogic
Message:

remove proc and char dev from ifxmips gpio driver

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ifxmips/files/drivers/char/ifxmips_gpio.c

    r11396 r11406  
    4444#define PINS_PER_PORT           16 
    4545 
    46 #define DRVNAME                         "ifxmips_gpio"   
     46#define DRVNAME                         "ifxmips_gpio" 
    4747 
    4848static unsigned int ifxmips_gpio_major = 0; 
     
    5252#define IFXMIPS_RST_PORT 1 
    5353 
    54 static struct timer_list rst_button_timer;  
     54static struct timer_list rst_button_timer; 
    5555 
    5656extern struct sock *uevent_sock; 
     
    316316{ 
    317317        struct event_t *event; 
    318          
     318 
    319319        rst_button_timer.expires = jiffies + HZ; 
    320320        add_timer(&rst_button_timer); 
    321          
     321 
    322322        if (pressed != ifxmips_port_get_input(IFXMIPS_RST_PORT, IFXMIPS_RST_PIN)) 
    323323        { 
     
    342342#endif 
    343343 
    344 long ifxmips_port_read_procmem_helper(char* tag, u32* in_reg, char *buf) 
    345 { 
    346         u32 reg, bit = 0; 
    347         unsigned int len, t; 
    348  
    349         len = sprintf(buf, "\n%s: ", tag); 
    350         reg = ifxmips_r32(in_reg); 
    351         bit = 0x80000000; 
    352         for (t = 0; t < 32; t++) { 
    353                 if ((reg & bit) > 0) 
    354                         len = len + sprintf(buf + len, "X"); 
    355                 else 
    356                         len = len + sprintf(buf + len, " "); 
    357                 bit = bit >> 1; 
    358         } 
    359  
    360         return len; 
    361 } 
    362  
    363 int 
    364 ifxmips_port_read_procmem (char *buf, char **start, off_t offset, int count, 
    365                           int *eof, void *data) 
    366 { 
    367         long len = sprintf (buf, "\nIFXMips Port Settings\n"); 
    368  
    369         len += sprintf (buf + len, 
    370                         "         3         2         1         0\n"); 
    371         len += sprintf (buf + len, 
    372                         "        10987654321098765432109876543210\n"); 
    373         len += sprintf (buf + len, 
    374                         "----------------------------------------\n"); 
    375  
    376         len += ifxmips_port_read_procmem_helper("P0-OUT", IFXMIPS_GPIO_P0_OUT, &buf[len]); 
    377         len += ifxmips_port_read_procmem_helper("P1-OUT", IFXMIPS_GPIO_P1_OUT, &buf[len]); 
    378         len += ifxmips_port_read_procmem_helper("P0-IN ", IFXMIPS_GPIO_P0_IN, &buf[len]); 
    379         len += ifxmips_port_read_procmem_helper("P1-IN ", IFXMIPS_GPIO_P1_IN, &buf[len]); 
    380         len += ifxmips_port_read_procmem_helper("P0-DIR", IFXMIPS_GPIO_P0_DIR, &buf[len]); 
    381         len += ifxmips_port_read_procmem_helper("P1-DIR", IFXMIPS_GPIO_P1_DIR, &buf[len]); 
    382         len += ifxmips_port_read_procmem_helper("P0-STO ", IFXMIPS_GPIO_P0_STOFF, &buf[len]); 
    383         len += ifxmips_port_read_procmem_helper("P1-STO ", IFXMIPS_GPIO_P1_STOFF, &buf[len]); 
    384         len += ifxmips_port_read_procmem_helper("P0-PUDE", IFXMIPS_GPIO_P0_PUDEN, &buf[len]); 
    385         len += ifxmips_port_read_procmem_helper("P1-PUDE", IFXMIPS_GPIO_P1_PUDEN, &buf[len]); 
    386         len += ifxmips_port_read_procmem_helper("P0-OD  ", IFXMIPS_GPIO_P0_OD, &buf[len]); 
    387         len += ifxmips_port_read_procmem_helper("P1-OD  ", IFXMIPS_GPIO_P1_OD, &buf[len]); 
    388         len += ifxmips_port_read_procmem_helper("P0-PUDS", IFXMIPS_GPIO_P0_PUDSEL, &buf[len]); 
    389         len += ifxmips_port_read_procmem_helper("P1-PUDS", IFXMIPS_GPIO_P1_PUDSEL, &buf[len]); 
    390         len += ifxmips_port_read_procmem_helper("P0-ALT0", IFXMIPS_GPIO_P0_ALTSEL0, &buf[len]); 
    391         len += ifxmips_port_read_procmem_helper("P1-ALT0", IFXMIPS_GPIO_P1_ALTSEL0, &buf[len]); 
    392         len += ifxmips_port_read_procmem_helper("P0-ALT1", IFXMIPS_GPIO_P0_ALTSEL1, &buf[len]); 
    393         len += ifxmips_port_read_procmem_helper("P1-ALT1", IFXMIPS_GPIO_P1_ALTSEL1, &buf[len]); 
    394         len = len + sprintf (buf + len, "\n\n"); 
    395  
    396         *eof = 1; 
    397  
    398         return len; 
    399 } 
    400  
    401 static int 
    402 ifxmips_port_open (struct inode *inode, struct file *filep) 
    403 { 
    404         return 0; 
    405 } 
    406  
    407 static int 
    408 ifxmips_port_release (struct inode *inode, struct file *filelp) 
    409 { 
    410         return 0; 
    411 } 
    412  
    413 static int 
    414 ifxmips_port_ioctl (struct inode *inode, struct file *filp, 
    415                         unsigned int cmd, unsigned long arg) 
    416 { 
    417         int ret = 0; 
    418         volatile struct ifxmips_port_ioctl_parm parm; 
    419  
    420         if (_IOC_TYPE (cmd) != IFXMIPS_PORT_IOC_MAGIC) 
    421                 return -EINVAL; 
    422  
    423         if (_IOC_DIR (cmd) & _IOC_WRITE) { 
    424                 if (!access_ok 
    425                     (VERIFY_READ, arg, 
    426                      sizeof (struct ifxmips_port_ioctl_parm))) 
    427                         return -EFAULT; 
    428                 ret = copy_from_user ((void *) &parm, (void *) arg, 
    429                                       sizeof (struct ifxmips_port_ioctl_parm)); 
    430         } 
    431         if (_IOC_DIR (cmd) & _IOC_READ) { 
    432                 if (!access_ok 
    433                     (VERIFY_WRITE, arg, 
    434                      sizeof (struct ifxmips_port_ioctl_parm))) 
    435                         return -EFAULT; 
    436         } 
    437  
    438         if (down_trylock (&port_sem) != 0) 
    439                 return -EBUSY; 
    440  
    441         switch (cmd) { 
    442         case IFXMIPS_PORT_IOCOD: 
    443                 if (parm.value == 0x00) 
    444                         ifxmips_port_clear_open_drain(parm.port, parm.pin); 
    445                 else 
    446                         ifxmips_port_set_open_drain(parm.port, parm.pin); 
    447                 break; 
    448  
    449         case IFXMIPS_PORT_IOCPUDSEL: 
    450                 if (parm.value == 0x00) 
    451                         ifxmips_port_clear_pudsel(parm.port, parm.pin); 
    452                 else 
    453                         ifxmips_port_set_pudsel(parm.port, parm.pin); 
    454                 break; 
    455  
    456         case IFXMIPS_PORT_IOCPUDEN: 
    457                 if (parm.value == 0x00) 
    458                         ifxmips_port_clear_puden(parm.port, parm.pin); 
    459                 else 
    460                         ifxmips_port_set_puden(parm.port, parm.pin); 
    461                 break; 
    462  
    463         case IFXMIPS_PORT_IOCSTOFF: 
    464                 if (parm.value == 0x00) 
    465                         ifxmips_port_clear_stoff(parm.port, parm.pin); 
    466                 else 
    467                         ifxmips_port_set_stoff(parm.port, parm.pin); 
    468                 break; 
    469  
    470         case IFXMIPS_PORT_IOCDIR: 
    471                 if (parm.value == 0x00) 
    472                         ifxmips_port_set_dir_in(parm.port, parm.pin); 
    473                 else 
    474                         ifxmips_port_set_dir_out(parm.port, parm.pin); 
    475                 break; 
    476  
    477         case IFXMIPS_PORT_IOCOUTPUT: 
    478                 if (parm.value == 0x00) 
    479                         ifxmips_port_clear_output(parm.port, parm.pin); 
    480                 else 
    481                         ifxmips_port_set_output(parm.port, parm.pin); 
    482                 break; 
    483  
    484         case IFXMIPS_PORT_IOCALTSEL0: 
    485                 if (parm.value == 0x00) 
    486                         ifxmips_port_clear_altsel0(parm.port, parm.pin); 
    487                 else 
    488                         ifxmips_port_set_altsel0(parm.port, parm.pin); 
    489                 break; 
    490  
    491         case IFXMIPS_PORT_IOCALTSEL1: 
    492                 if (parm.value == 0x00) 
    493                         ifxmips_port_clear_altsel1(parm.port, parm.pin); 
    494                 else 
    495                         ifxmips_port_set_altsel1(parm.port, parm.pin); 
    496                 break; 
    497  
    498         case IFXMIPS_PORT_IOCINPUT: 
    499                 parm.value = ifxmips_port_get_input(parm.port, parm.pin); 
    500                 copy_to_user((void*)arg, (void*)&parm, 
    501                         sizeof(struct ifxmips_port_ioctl_parm)); 
    502                 break; 
    503  
    504         default: 
    505                 ret = -EINVAL; 
    506         } 
    507  
    508         up (&port_sem); 
    509  
    510         return ret; 
    511 } 
    512  
    513 static struct file_operations port_fops = { 
    514       .open = ifxmips_port_open, 
    515       .release = ifxmips_port_release, 
    516       .ioctl = ifxmips_port_ioctl 
    517 }; 
    518  
    519344static int 
    520345ifxmips_gpio_probe (struct platform_device *dev) 
     
    523348 
    524349        sema_init (&port_sem, 1); 
    525  
    526         ifxmips_gpio_major = register_chrdev(0, DRVNAME, &port_fops); 
    527         if (!ifxmips_gpio_major) 
    528         { 
    529                 printk(KERN_INFO DRVNAME ": Error! Could not register port device. #%d\n", ifxmips_gpio_major); 
    530                 retval = -EINVAL; 
    531                 goto out; 
    532         } 
    533  
    534         create_proc_read_entry(DRVNAME, 0, NULL, ifxmips_port_read_procmem, NULL); 
    535350 
    536351#ifdef CONFIG_IFXMIPS_GPIO_RST_BTN 
     
    550365        printk(KERN_INFO DRVNAME ": device successfully initialized #%d.\n", ifxmips_gpio_major); 
    551366 
    552 out: 
    553367        return retval; 
    554368} 
     
    561375#endif 
    562376        unregister_chrdev(ifxmips_gpio_major, DRVNAME); 
    563         remove_proc_entry(DRVNAME, NULL); 
    564377 
    565378        return 0; 
Note: See TracChangeset for help on using the changeset viewer.