Re: problem to retrieve usb_serial object from usb_serial_port object

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

 



On Tue, 2014-01-14 at 14:54 +0100, Silvio F. wrote:
> Hello,
> 
> I try to communicate with a cp210x-device on my usb bus. I create a sysfs
> object with some simple lines of code like the next one ...
> 
>     static ssize_t cp210x_show_x(struct device *dev, struct device_attribute *attr, char *buf)
>     {
>         struct usb_serial_port *port = to_usb_serial_port(dev);
> 
>         if(!port) {
>             printk("no port\n");
>             goto exit;
>         }
> 
>         if(!port->serial) {
>             printk("no serial\n");
>             goto exit;
>         }
> 
>         struct cp210x_serial_private *spriv = usb_get_serial_data(port->serial);
>         printk("%s:%s:%d num_ports:0x%08x\n", __FILE__, __func__, __LINE__, port->serial->num_ports);
> 
>     exit:
>         return 0;
>     }
>     static DEVICE_ATTR(x, S_IRUGO, cp210x_show_x, NULL);
> 
>     static int create_sysfs_attrs(struct usb_serial *serial)
>     {
>         return device_create_file(&serial->dev->dev, &dev_attr_x);
>     } 

You are creating a sysfs entry for struct device associated with a
struct usb_serial. Yet you convert this to struct usb_serial_port.

struct usb_serial {
        struct usb_device               *dev;
        struct usb_serial_driver        *type;
        struct usb_interface            *interface;
        unsigned char                   disconnected:1;
        unsigned char                   suspending:1;
        unsigned char                   attached:1;
        unsigned char                   minors_reserved:1;
        unsigned char                   num_ports;
        unsigned char                   num_port_pointers;
        char                            num_interrupt_in;
        char                            num_interrupt_out;
        char                            num_bulk_in;
        char                            num_bulk_out;
        struct usb_serial_port          *port[MAX_NUM_PORTS];
        struct kref                     kref;
        struct mutex                    disc_mutex;
        void                            *private;
};

This structure points to multiple instances of struct usb_serial_port.
This cannot work.

	Regards
		Oliver


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux