> + > +/* > + * USBSS-DEV register interface. > + * This corresponds to the USBSS Device Controller Interface */ > +/** > + * struct xhci_cap_regs - xHCI Host Controller Capability Registers. struct cdns3_usb_regs - device controller registers > +struct cdns3_device; > + > +struct cdns3_endpoint { > + struct usb_ep endpoint; > + struct list_head request_list; > + struct list_head ep_match_pending_list; > + > + struct cdns3_trb *trb_pool; > + dma_addr_t trb_pool_dma; > + > + struct cdns3_device *cdns3_dev; > + char name[20]; > + > +#define EP_ENABLED BIT(0) > +#define EP_STALL BIT(1) > +#define EP_WEDGE BIT(2) > +#define EP_TRANSFER_STARTED BIT(3) > +#define EP_UPDATE_EP_TRBADDR BIT(4) > +#define EP_PENDING_REQUEST BIT(5) > +#define EP_USED BIT(5) > + u32 flags; > + > + void *aligned_buff; > + dma_addr_t aligned_dma_addr; > + u8 dir; > + u8 num; > + u8 type; > + > + int free_trbs; > + u8 pcs; > + u8 ccs; > + int enqueue; > + int dequeue; > +}; > + Would you please add kernel doc for above structure? > +struct cdns3_request { > + struct usb_request request; > + struct cdns3_endpoint *priv_ep; > + struct cdns3_trb *trb; > + int start_trb; > + int end_trb; > + int on_ring:1; > +}; > + > +#define to_cdns3_request(r) (container_of(r, struct cdns3_request, > +request)) > + > +struct cdns3_device { > + struct device dev; > + struct cdns3_usb_regs __iomem *regs; > + > + struct usb_gadget gadget; > + struct usb_gadget_driver *gadget_driver; > + > + struct usb_ctrlrequest *setup; > + dma_addr_t setup_dma; > + dma_addr_t trb_ep0_dma; > + struct cdns3_trb *trb_ep0; > + void *zlp_buf; > + > + struct cdns3_endpoint *eps[USB_SS_ENDPOINTS_MAX_COUNT]; > + int ep_nums; > + /* > + * field used for improving performance. It holds the last > + * selected endpoint number > + */ > + u32 selected_ep; > + struct usb_request *ep0_request; > + int ep0_data_dir; > + int hw_configured_flag; > + int wake_up_flag; > + u16 isoch_delay; > + /* generic spin-lock for drivers */ > + spinlock_t lock; > + > + unsigned is_connected:1; > + unsigned in_standby_mode:1; > + unsigned status_completion_no_call:1; > + unsigned u1_allowed:1; > + unsigned u2_allowed:1; > + > + u32 usb_ien; > + u32 ep_ien; > + int setup_pending; > + struct device *sysdev; > + /* The device mode is enabled */ > + int start_gadget; > + struct list_head ep_match_list; > + /* KB */ > + int onchip_mem_allocated_size; > + /* Memory is allocated for OUT */ > + int out_mem_is_allocated:1; > + struct work_struct pending_status_wq; > + struct usb_request *pending_status_request; > +}; > + kernel-doc please Peter