⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gadget.h

📁 AMLOGIC DPF source code
💻 H
字号:
#ifndef _GADGET_H_
#define _GADGET_H_

/**
 *          USB Gadget Driver APIs head file
 *      
 *          Create by Wanyong @2006-08-29
 */
#include <os/ioapi/include/ioapi.h>


/**
 *
 *      Gadget name defines.
 *
 */
#define	USB_GADGET_TD242		"/dev/disk/td242_fc"
#define	USB_GADGET_TD1120	"/dev/disk/td1120_fc"
#define	USB_GADGET_DWC		"/dev/dwc_fc"
#define	USB_GADGET_DWC1		"/dev/dwc_fc1"


/**
 *
 *      Gadget ioctl command defines.
 *
 */
#define GADGETIO_REGISTER		_IO('U', 0)      /* Register gadget */
#define GADGETIO_START			_IO('U', 1)      /* Start gadget */
#define GADGETIO_STOP			_IO('U', 2)      /* Stop gadget */
#define GADGETIO_GETCTL     		_IO('U', 3)      /* Get usb controller by gadget */
#define GADGETIO_GETGEDGET	_IO('U', 4)	 /* Get gadget by name */	
#define GADGETIO_GETCONNSTS   _IO('U', 5)	 /* Get device Connected status */	


/**
 *
 *      Gadget backup file device pre-defines.
 *
 */
#define GADGET_STORAGE_UDISK    "/dev/disk/usba0"
#define GADGET_STORAGE_HD         "/dev/disk/hda"
#define GADGET_STORAGE_NAND     "/dev/disk/nanda"
#define GADGET_STORAGE_CF          "/dev/disk/cf"
#define GADGET_STORAGE_MS         "/dev/disk/ms"
#define GADGET_STORAGE_SD         "/dev/disk/sd"
#define GADGET_STORAGE_XD         "/dev/disk/xd"
#define GADGET_STORAGE_SM         "/dev/disk/sm"


/**
 *
 *      Gadget structs defines.
 *
 */

#define MAX_LUNS        8

typedef enum gadget_style{
        NULL_GADGET_STYLE = 0,
        MS_GADGET_STYLE,
        PTP_GADGET_STYLE,
        END_GADGET_STYLE
}gadget_style_t;

typedef int(*MSG_CB)(int msg,int arg1,int arg2,void * parg);    /*  message call back */

typedef struct _usb_device_desc{
        u16_t   idVendor;       /* Vendor ID */
        u16_t   idProduct;      /* Product ID */
        u16_t   bcdDevice;      /* Device Version */
        const char  *strManufacturer;/* Manufacturer String */
        const char  *strProduct;        /* Product String */
        const char  *strSerial;    /* Serial String */
}usb_device_desc;


typedef struct _product_desc{
    const char *strVendor;
    const char *strMode;
    const char *strVersion;
}product_desc;

typedef struct _gadget_handle{
        gadget_style_t  style;      /** Gadget Style */
        char * controller;             /** USB Control node, like: "/dev/dwc_fc"*/
        char * name;                  /** Gadget name, like: "ms_gadget,ptp_gadget"*/

        usb_device_desc usb_desc;/** USB standard description */
        product_desc product_desc;/** Product description */

        int (*init)(char * controller);             /** init routine */
        int (*exit)(char * controller);             /** exit routine */

        char *  lun_filename[MAX_LUNS];     /** ms_gadget file/device name, like: "/dev/disk/nanda" */
        char    lun_is_ro[MAX_LUNS];            /** ms_gadget  read only flag */

        OS_EVENT  * msg_queue;  /** Message queue */
        MSG_CB msg_cb;   /*message call back*/
        void * data;
}gadget_handle_t;

extern struct _gadget_handle ms_gadget_handle ;
extern struct _gadget_handle ptp_gadget_handle ;

/**
 *
 *      Gadget Driver Interfaces.
 *
 */
avfs_device_driver usb_dwcfc_initialize (avfs_device_major_number major,				avfs_device_minor_number minor, void *arg);

avfs_device_driver usb_dwcfc_open (avfs_device_major_number major,
				avfs_device_minor_number minor, void *arg);

avfs_device_driver usb_dwcfc_close (avfs_device_major_number major,
				avfs_device_minor_number minor, void *arg);

avfs_device_driver usb_dwcfc_ioctl(avfs_device_major_number major, 
				avfs_device_minor_number minor, void *arg);



/**
 *
 *      Gadget Driver Interface Tables.
 *
 */
#ifdef AML_ATHENA
#define DEVICE_TALBE_USB_GADGET  {  usb_dwcfc_initialize, usb_dwcfc_open, usb_dwcfc_close,NULL ,NULL,usb_dwcfc_ioctl }
#else
#define DEVICE_TALBE_USB_GADGET {  0 }
#endif

/**
 *
 *      Gadget APIs.
 *
 */
int usb_gadget_register(char * controller,gadget_handle_t * pgh);
int usb_gadget_start(char *controller,gadget_style_t style);
int usb_gadget_stop(char *controller,gadget_style_t style);
int usb_gadget_controller_connect_state(char * controller,char * state);


int usb_gadget_set_lun_storage(int lun_idx,char * filename,char is_read_only);
int usb_gadget_set_ptp_msg_cb(MSG_CB msg_cb);
int usb_gadget_set_device_desc(struct _gadget_handle * pgh,struct _usb_device_desc *pudd);
int usb_gadget_set_product_desc(struct _gadget_handle * pgh,struct _product_desc *ppd);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -