need help: regarding usb drivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 i have just started working on USB myDev Device Drivers. I have some
Problem with DevFS.would u pls help me... this driver compiles
successfully and runs successfully but i m unable to create dir using
devfs_mk_dir and register with defs_register. I have also read rubini's
book and ur documentation on "writing usb device drivers" but unable to
find error. I m using RH9.0 and kernel version 2.4.
 This Code is like this :

 1. Header Files :

#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/usb.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/poll.h>
#include <linux/init.h>
#include <linux/config.h>
#include <linux/fcntl.h>
#include <linux/spinlock.h>
#include <linux/smp_lock.h>

 2. static struct file_operations myDev_fops = {

        owner:                THIS_MODULE,
        read:                myDev_read,
        write:                myDev_write,
        ioctl:                myDev_ioctl,
        open:                myDev_open,
        release:        myDev_release,
};


 3. static struct usb_driver myDev_driver = {
        name:                "Sigmatel_myDev_driver",
        probe:                myDev_probe,
        disconnect:        myDev_disconnect,
        fops:                &myDev_fops,
        minor:                USB_myDev_MINOR_NO,/*200*/
        id_table:        myDev_table,
};

 4. extern devfs_handle_t usb_devfs_handle;
devfs_handle_t myDev_devfs_dir;

 5. static void* myDev_probe(struct usb_device *udev, unsigned int ifnum,
const struct usb_device_id *id)
{
        struct usb_myDev *dev = NULL;
        .
        .
        .
        .

        int buffer_size;
        int i;
        char name[10]; /*Name of the node using devfs*/
        .
        .
        .
        .
        .
        .

        /* initialize the devfs node for this device and register it */
        /*sprintf(name, "USBmyDev");*/
        /******************** Commented section ********************
                USB_MAJOR is defined as 180 in usb.h*/
        /*
        dev->devfs=devfs_register(NULL,"usbmyDev",
                                     DEVFS_FL_DEFAULT, USB_MAJOR,
                                     200,
                                     S_IFCHR | S_IRUSR | S_IWUSR |
                                     S_IRGRP | S_IWGRP | S_IROTH,
                                     &myDev_fops, dev);
        /***********************************************************/
        myDev_devfs_dir=devfs_mk_dir(NULL,"usbmyDev",NULL);
        if(!myDev_devfs_dir)
        {
        info("unable to make directory");
        }
        usb_devfs_handle = devfs_register(myDev_devfs_dir, "usbmyDev",
                                     DEVFS_FL_AUTO_DEVNUM,0,0,
                                     S_IFCHR | S_IRUGO | S_IWUGO,
                                     &myDev_fops, NULL);
        dev->devfs=usb_devfs_handle;

        /* let the user know what node this device is now attached to */
        if(dev->devfs > 0)
        {
                info("Yes Registered...");
        }
        else
        {
                info("Error Occured...");
        }
        info("Sigmatel's USB myDev device now attached to USBmyDev");
        goto exit;

error:
        myDev_delete(dev);
        dev = NULL;

exit:
        return dev;
}

---------------- End Of Code -------------------


Would u pls specify what is the problem?



regards,
navtez
Senior Undergraduate Student
Dept of Computer Sc. & Engg.
BBSBEC Fatehgarh Sahib.
--------------------------------------
     Miles to go before I Sleep...
http://www.geocities.com/desireofstars
--------------------------------------


-----------------------------------------
Baba Banda Singh Bahadur Engineering College
Fatehgarh Sahib, Punjab, India
http://www.bbsbec.ac.in
http://www.bbsbec.org



--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux