hc
2023-11-07 f45e756958099c35d6afb746df1d40a1c6302cfc
kernel/include/uapi/linux/rk-pcie-ep.h
....@@ -8,13 +8,77 @@
88
99 #include <linux/types.h>
1010
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
+ */
1130 struct pcie_ep_user_data {
31
+ __u64 bar0_phys_addr;
1232 __u32 elbi_app_user[11];
1333 };
1434
35
+/*
36
+ * rockchip driver cache ioctrl input param
37
+ */
1538 struct pcie_ep_dma_cache_cfg {
1639 __u64 addr;
1740 __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 */
1882 };
1983
2084 #define PCIE_BASE 'P'
....@@ -22,5 +86,8 @@
2286 #define PCIE_DMA_CACHE_INVALIDE _IOW(PCIE_BASE, 1, struct pcie_ep_dma_cache_cfg)
2387 #define PCIE_DMA_CACHE_FLUSH _IOW(PCIE_BASE, 2, struct pcie_ep_dma_cache_cfg)
2488 #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)
2592
2693 #endif