hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/include/uapi/linux/rk-pcie-ep.h
....@@ -25,19 +25,26 @@
2525 #define RKEP_SMODE_APPRDY 0x20
2626
2727 /*
28
- * rockchip pcie driver elbi ioctrl output data
29
- */
30
-struct pcie_ep_user_data {
31
- __u64 bar0_phys_addr;
32
- __u32 elbi_app_user[11];
33
-};
34
-
35
-/*
3628 * rockchip driver cache ioctrl input param
3729 */
3830 struct pcie_ep_dma_cache_cfg {
3931 __u64 addr;
4032 __u32 size;
33
+};
34
+
35
+struct pcie_ep_dma_block {
36
+ __u64 bus_paddr;
37
+ __u64 local_paddr;
38
+ __u32 size;
39
+};
40
+
41
+struct pcie_ep_dma_block_req {
42
+ __u16 vir_id; /* Default 0 */
43
+ __u8 chn;
44
+ __u8 wr;
45
+ __u32 flag;
46
+#define PCIE_EP_DMA_BLOCK_FLAG_COHERENT BIT(0) /* Cache coherent, 1-need, 0-None */
47
+ struct pcie_ep_dma_block block;
4148 };
4249
4350 #define PCIE_EP_OBJ_INFO_MAGIC 0x524B4550
....@@ -59,8 +66,14 @@
5966 PCIE_EP_MMAP_RESOURCE_BAR0,
6067 PCIE_EP_MMAP_RESOURCE_BAR2,
6168 PCIE_EP_MMAP_RESOURCE_BAR4,
69
+ PCIE_EP_MMAP_RESOURCE_USER_MEM,
70
+ PCIE_EP_MMAP_RESOURCE_RK3568_RC_DBI,
71
+ PCIE_EP_MMAP_RESOURCE_RK3588_RC_DBI,
6272 PCIE_EP_MMAP_RESOURCE_MAX,
6373 };
74
+
75
+#define PCIE_EP_OBJ_INFO_MSI_DATA_NUM 0x8
76
+#define RKEP_EP_VIRTUAL_ID_MAX (PCIE_EP_OBJ_INFO_MSI_DATA_NUM * 32) /* 256 virtual_id */
6477
6578 /*
6679 * rockchip ep device information which is store in BAR0
....@@ -72,22 +85,38 @@
7285 __u16 mode;
7386 __u16 submode;
7487 } devmode;
75
- __u8 reserved[0x1F4];
88
+ __u32 msi_data[PCIE_EP_OBJ_INFO_MSI_DATA_NUM];
89
+ __u8 reserved[0x1D0];
7690
7791 __u32 irq_type_rc; /* Generate in ep isr, valid only for rc, clear in rc */
7892 struct pcie_ep_obj_irq_dma_status dma_status_rc; /* Generate in ep isr, valid only for rc, clear in rc */
7993 __u32 irq_type_ep; /* Generate in ep isr, valid only for ep, clear in ep */
8094 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 */
95
+ __u32 irq_user_data_rc; /* Generate in ep, valid only for rc, No need to clear */
96
+ __u32 irq_user_data_ep; /* Generate in rc, valid only for ep, No need to clear */
97
+};
98
+
99
+/*
100
+ * rockchip driver ep_obj poll ioctrl input param
101
+ */
102
+struct pcie_ep_obj_poll_virtual_id_cfg {
103
+ __u32 timeout_ms;
104
+ __u32 sync;
105
+ __u32 virtual_id;
106
+ __u32 poll_status;
82107 };
83108
84109 #define PCIE_BASE 'P'
85
-#define PCIE_DMA_GET_ELBI_DATA _IOR(PCIE_BASE, 0, struct pcie_ep_user_data)
86110 #define PCIE_DMA_CACHE_INVALIDE _IOW(PCIE_BASE, 1, struct pcie_ep_dma_cache_cfg)
87111 #define PCIE_DMA_CACHE_FLUSH _IOW(PCIE_BASE, 2, struct pcie_ep_dma_cache_cfg)
88112 #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)
113
+#define PCIE_EP_RAISE_MSI _IOW(PCIE_BASE, 4, int)
114
+#define PCIE_EP_SET_MMAP_RESOURCE _IOW(PCIE_BASE, 6, int)
115
+#define PCIE_EP_RAISE_ELBI _IOW(PCIE_BASE, 7, int)
116
+#define PCIE_EP_REQUEST_VIRTUAL_ID _IOR(PCIE_BASE, 16, int)
117
+#define PCIE_EP_RELEASE_VIRTUAL_ID _IOW(PCIE_BASE, 17, int)
118
+#define PCIE_EP_RAISE_IRQ_USER _IOW(PCIE_BASE, 18, int)
119
+#define PCIE_EP_POLL_IRQ_USER _IOW(PCIE_BASE, 19, struct pcie_ep_obj_poll_virtual_id_cfg)
120
+#define PCIE_EP_DMA_XFER_BLOCK _IOW(PCIE_BASE, 32, struct pcie_ep_dma_block_req)
92121
93122 #endif