| .. | .. |
|---|
| 8 | 8 | |
|---|
| 9 | 9 | #include <linux/types.h> |
|---|
| 10 | 10 | |
|---|
| 11 | +/* rkep device mode status definition */ |
|---|
| 12 | +#define RKEP_MODE_BOOTROM 1 |
|---|
| 13 | +#define RKEP_MODE_LOADER 2 |
|---|
| 14 | +#define RKEP_MODE_KERNEL 3 |
|---|
| 15 | +#define RKEP_MODE_FUN0 4 |
|---|
| 16 | +/* Common status */ |
|---|
| 17 | +#define RKEP_SMODE_INIT 0 |
|---|
| 18 | +#define RKEP_SMODE_LNKRDY 1 |
|---|
| 19 | +#define RKEP_SMODE_LNKUP 2 |
|---|
| 20 | +#define RKEP_SMODE_ERR 0xff |
|---|
| 21 | +/* Firmware download status */ |
|---|
| 22 | +#define RKEP_SMODE_FWDLRDY 0x10 |
|---|
| 23 | +#define RKEP_SMODE_FWDLDONE 0x11 |
|---|
| 24 | +/* Application status*/ |
|---|
| 25 | +#define RKEP_SMODE_APPRDY 0x20 |
|---|
| 26 | + |
|---|
| 27 | +/* |
|---|
| 28 | + * rockchip pcie driver elbi ioctrl output data |
|---|
| 29 | + */ |
|---|
| 11 | 30 | struct pcie_ep_user_data { |
|---|
| 31 | + __u64 bar0_phys_addr; |
|---|
| 12 | 32 | __u32 elbi_app_user[11]; |
|---|
| 13 | 33 | }; |
|---|
| 14 | 34 | |
|---|
| 35 | +/* |
|---|
| 36 | + * rockchip driver cache ioctrl input param |
|---|
| 37 | + */ |
|---|
| 15 | 38 | struct pcie_ep_dma_cache_cfg { |
|---|
| 16 | 39 | __u64 addr; |
|---|
| 17 | 40 | __u32 size; |
|---|
| 41 | +}; |
|---|
| 42 | + |
|---|
| 43 | +#define PCIE_EP_OBJ_INFO_MAGIC 0x524B4550 |
|---|
| 44 | + |
|---|
| 45 | +enum pcie_ep_obj_irq_type { |
|---|
| 46 | + OBJ_IRQ_UNKNOWN, |
|---|
| 47 | + OBJ_IRQ_DMA, |
|---|
| 48 | + OBJ_IRQ_USER, |
|---|
| 49 | + OBJ_IRQ_ELBI, |
|---|
| 50 | +}; |
|---|
| 51 | + |
|---|
| 52 | +struct pcie_ep_obj_irq_dma_status { |
|---|
| 53 | + __u32 wr; |
|---|
| 54 | + __u32 rd; |
|---|
| 55 | +}; |
|---|
| 56 | + |
|---|
| 57 | +enum pcie_ep_mmap_resource { |
|---|
| 58 | + PCIE_EP_MMAP_RESOURCE_DBI, |
|---|
| 59 | + PCIE_EP_MMAP_RESOURCE_BAR0, |
|---|
| 60 | + PCIE_EP_MMAP_RESOURCE_BAR2, |
|---|
| 61 | + PCIE_EP_MMAP_RESOURCE_BAR4, |
|---|
| 62 | + PCIE_EP_MMAP_RESOURCE_MAX, |
|---|
| 63 | +}; |
|---|
| 64 | + |
|---|
| 65 | +/* |
|---|
| 66 | + * rockchip ep device information which is store in BAR0 |
|---|
| 67 | + */ |
|---|
| 68 | +struct pcie_ep_obj_info { |
|---|
| 69 | + __u32 magic; |
|---|
| 70 | + __u32 version; |
|---|
| 71 | + struct { |
|---|
| 72 | + __u16 mode; |
|---|
| 73 | + __u16 submode; |
|---|
| 74 | + } devmode; |
|---|
| 75 | + __u8 reserved[0x1F4]; |
|---|
| 76 | + |
|---|
| 77 | + __u32 irq_type_rc; /* Generate in ep isr, valid only for rc, clear in rc */ |
|---|
| 78 | + struct pcie_ep_obj_irq_dma_status dma_status_rc; /* Generate in ep isr, valid only for rc, clear in rc */ |
|---|
| 79 | + __u32 irq_type_ep; /* Generate in ep isr, valid only for ep, clear in ep */ |
|---|
| 80 | + struct pcie_ep_obj_irq_dma_status dma_status_ep; /* Generate in ep isr, valid only for ep, clear in ep */ |
|---|
| 81 | + __u32 obj_irq_user_data; /* OBJ_IRQ_USER userspace data */ |
|---|
| 18 | 82 | }; |
|---|
| 19 | 83 | |
|---|
| 20 | 84 | #define PCIE_BASE 'P' |
|---|
| .. | .. |
|---|
| 22 | 86 | #define PCIE_DMA_CACHE_INVALIDE _IOW(PCIE_BASE, 1, struct pcie_ep_dma_cache_cfg) |
|---|
| 23 | 87 | #define PCIE_DMA_CACHE_FLUSH _IOW(PCIE_BASE, 2, struct pcie_ep_dma_cache_cfg) |
|---|
| 24 | 88 | #define PCIE_DMA_IRQ_MASK_ALL _IOW(PCIE_BASE, 3, int) |
|---|
| 89 | +#define PCIE_DMA_RAISE_MSI_OBJ_IRQ_USER _IOW(PCIE_BASE, 4, int) |
|---|
| 90 | +#define PCIE_EP_GET_USER_INFO _IOR(PCIE_BASE, 5, struct pcie_ep_user_data) |
|---|
| 91 | +#define PCIE_EP_SET_MMAP_RESOURCE _IOW(PCIE_BASE, 6, enum pcie_ep_mmap_resource) |
|---|
| 25 | 92 | |
|---|
| 26 | 93 | #endif |
|---|