lineage_kernel_xcoverpro/include/linux/usb/exynos_usb_audio.h

87 lines
2.4 KiB
C
Executable File

#include <sound/samsung/abox.h>
/* for KM */
#define USB_AUDIO_MEM_BASE 0xC0000000
#define USB_AUDIO_SAVE_RESTORE (USB_AUDIO_MEM_BASE)
#define USB_AUDIO_DEV_CTX (USB_AUDIO_SAVE_RESTORE+PAGE_SIZE)
#define USB_AUDIO_INPUT_CTX (USB_AUDIO_DEV_CTX+PAGE_SIZE)
#define USB_AUDIO_OUT_DEQ (USB_AUDIO_INPUT_CTX+PAGE_SIZE)
#define USB_AUDIO_IN_DEQ (USB_AUDIO_OUT_DEQ+PAGE_SIZE)
#define USB_AUDIO_FBOUT_DEQ (USB_AUDIO_IN_DEQ+PAGE_SIZE)
#define USB_AUDIO_FBIN_DEQ (USB_AUDIO_FBOUT_DEQ+PAGE_SIZE)
#define USB_AUDIO_ERST (USB_AUDIO_FBIN_DEQ+PAGE_SIZE)
#define USB_AUDIO_DESC (USB_AUDIO_ERST+PAGE_SIZE)
#define USB_AUDIO_PCM_OUTBUF (USB_AUDIO_MEM_BASE+0x100000)
#define USB_AUDIO_PCM_INBUF (USB_AUDIO_MEM_BASE+0x800000)
#if defined(CONFIG_SOC_EXYNOS9820)
#define USB_AUDIO_XHCI_BASE 0x10C00000
#elif defined(CONFIG_SOC_EXYNOS9610)
#define USB_AUDIO_XHCI_BASE 0x13200000
#else
#error
#endif
struct host_data {
dma_addr_t out_data_dma;
dma_addr_t in_data_dma;
void *out_data_addr;
void *in_data_addr;
};
extern struct host_data xhci_data;
struct exynos_usb_audio {
struct usb_device *udev;
struct platform_device *abox;
struct platform_device *hcd_pdev;
struct mutex lock;
struct completion in_task_done;
struct completion out_task_done;
struct completion in_conn_stop;
struct completion out_conn_stop;
u64 out_buf_addr;
u64 in_buf_addr;
u64 pcm_offset;
u64 desc_addr;
u64 offset;
/* for hw_info */
u64 dcbaa_dma;
u64 in_ctx;
u64 out_ctx;
u64 erst_addr;
int speed;
/* 1: in, 0: out */
int set_ep;
int is_audio;
u8 indeq_map_done;
u8 outdeq_map_done;
u8 fb_indeq_map_done;
u8 fb_outdeq_map_done;
u32 pcm_open_done;
void *pcm_buf;
u64 save_dma;
};
extern struct exynos_usb_audio *usb_audio;
extern int otg_connection;
int exynos_usb_audio_map_buf(struct usb_device *udev);
int exynos_usb_audio_pcmbuf(struct usb_device *udev);
int exynos_usb_audio_setrate(int intf, int rate, int alt);
int exynos_usb_audio_setintf(struct usb_device *udev, int iface, int alt, int direction);
int exynos_usb_audio_conn(int is_conn);
int exynos_usb_audio_pcm(int is_open, int direction);
int exynos_usb_audio_l2(int is_l2);
int exynos_usb_audio_desc(struct usb_device *udev);
int exynos_usb_audio_hcd(struct usb_device *udev);
int exynos_usb_audio_init(struct device *dev, struct platform_device *pdev);
int exynos_usb_audio_exit(void);
void exynos_usb_audio_set_device(struct usb_device *udev);