| 1 |
|
| 2 | #ifndef __CPM_H
|
| 3 | #define __CPM_H
|
| 4 |
|
| 5 | #include <linux/compiler.h>
|
| 6 | #include <linux/types.h>
|
| 7 | #include <linux/errno.h>
|
| 8 | #include <linux/of.h>
|
| 9 | #include <soc/fsl/qe/qe.h>
|
| 10 |
|
| 11 | |
| 12 | * SPI Parameter RAM common to QE and CPM.
|
| 13 |
|
| 14 | struct spi_pram {
|
| 15 | __be16 rbase;
|
| 16 | __be16 tbase;
|
| 17 | u8 rfcr;
|
| 18 | u8 tfcr;
|
| 19 | __be16 mrblr;
|
| 20 | __be32 rstate;
|
| 21 | __be32 rdp;
|
| 22 | __be16 rbptr;
|
| 23 | __be16 rbc;
|
| 24 | __be32 rxtmp;
|
| 25 | __be32 tstate;
|
| 26 | __be32 tdp;
|
| 27 | __be16 tbptr;
|
| 28 | __be16 tbc;
|
| 29 | __be32 txtmp;
|
| 30 | __be32 res;
|
| 31 | __be16 rpbase;
|
| 32 | __be16 res1;
|
| 33 | };
|
| 34 |
|
| 35 | |
| 36 | * USB Controller pram common to QE and CPM.
|
| 37 |
|
| 38 | struct usb_ctlr {
|
| 39 | u8 usb_usmod;
|
| 40 | u8 usb_usadr;
|
| 41 | u8 usb_uscom;
|
| 42 | u8 res1[1];
|
| 43 | __be16 usb_usep[4];
|
| 44 | u8 res2[4];
|
| 45 | __be16 usb_usber;
|
| 46 | u8 res3[2];
|
| 47 | __be16 usb_usbmr;
|
| 48 | u8 res4[1];
|
| 49 | u8 usb_usbs;
|
| 50 |
|
| 51 | __be16 usb_ussft;
|
| 52 | u8 res5[2];
|
| 53 | __be16 usb_usfrn;
|
| 54 | u8 res6[0x22];
|
| 55 | } __attribute__ ((packed));
|
| 56 |
|
| 57 | |
| 58 | * Function code bits, usually generic to devices.
|
| 59 |
|
| 60 | #ifdef CONFIG_CPM1
|
| 61 | #define CPMFCR_GBL ((u_char)0x00)
|
| 62 | #define CPMFCR_TC2 ((u_char)0x00)
|
| 63 | #define CPMFCR_DTB ((u_char)0x00)
|
| 64 | #define CPMFCR_BDB ((u_char)0x00)
|
| 65 | #else
|
| 66 | #define CPMFCR_GBL ((u_char)0x20)
|
| 67 | #define CPMFCR_TC2 ((u_char)0x04)
|
| 68 | #define CPMFCR_DTB ((u_char)0x02)
|
| 69 | #define CPMFCR_BDB ((u_char)0x01)
|
| 70 | #endif
|
| 71 | #define CPMFCR_EB ((u_char)0x10)
|
| 72 |
|
| 73 | |
| 74 |
|
| 75 | #define CPM_CR_INIT_TRX ((ushort)0x0000)
|
| 76 | #define CPM_CR_INIT_RX ((ushort)0x0001)
|
| 77 | #define CPM_CR_INIT_TX ((ushort)0x0002)
|
| 78 | #define CPM_CR_HUNT_MODE ((ushort)0x0003)
|
| 79 | #define CPM_CR_STOP_TX ((ushort)0x0004)
|
| 80 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005)
|
| 81 | #define CPM_CR_RESTART_TX ((ushort)0x0006)
|
| 82 | #define CPM_CR_CLOSE_RX_BD ((ushort)0x0007)
|
| 83 | #define CPM_CR_SET_GADDR ((ushort)0x0008)
|
| 84 | #define CPM_CR_SET_TIMER ((ushort)0x0008)
|
| 85 | #define CPM_CR_STOP_IDMA ((ushort)0x000b)
|
| 86 |
|
| 87 |
|
| 88 | typedef struct cpm_buf_desc {
|
| 89 | ushort cbd_sc;
|
| 90 | ushort cbd_datlen;
|
| 91 | uint cbd_bufaddr;
|
| 92 | } cbd_t;
|
| 93 |
|
| 94 | |
| 95 |
|
| 96 |
|
| 97 | #define BD_SC_EMPTY (0x8000)
|
| 98 | #define BD_SC_READY (0x8000)
|
| 99 | #define BD_SC_WRAP (0x2000)
|
| 100 | #define BD_SC_INTRPT (0x1000)
|
| 101 | #define BD_SC_LAST (0x0800)
|
| 102 | #define BD_SC_TC (0x0400)
|
| 103 | #define BD_SC_CM (0x0200)
|
| 104 | #define BD_SC_ID (0x0100)
|
| 105 | #define BD_SC_P (0x0100)
|
| 106 | #define BD_SC_BR (0x0020)
|
| 107 | #define BD_SC_FR (0x0010)
|
| 108 | #define BD_SC_PR (0x0008)
|
| 109 | #define BD_SC_NAK (0x0004)
|
| 110 | #define BD_SC_OV (0x0002)
|
| 111 | #define BD_SC_UN (0x0002)
|
| 112 | #define BD_SC_CD (0x0001)
|
| 113 | #define BD_SC_CL (0x0001)
|
| 114 |
|
| 115 | |
| 116 | * Common to SCC and FCC.
|
| 117 |
|
| 118 | #define BD_ENET_RX_EMPTY (0x8000)
|
| 119 | #define BD_ENET_RX_WRAP (0x2000)
|
| 120 | #define BD_ENET_RX_INTR (0x1000)
|
| 121 | #define BD_ENET_RX_LAST (0x0800)
|
| 122 | #define BD_ENET_RX_FIRST (0x0400)
|
| 123 | #define BD_ENET_RX_MISS (0x0100)
|
| 124 | #define BD_ENET_RX_BC (0x0080)
|
| 125 | #define BD_ENET_RX_MC (0x0040)
|
| 126 | #define BD_ENET_RX_LG (0x0020)
|
| 127 | #define BD_ENET_RX_NO (0x0010)
|
| 128 | #define BD_ENET_RX_SH (0x0008)
|
| 129 | #define BD_ENET_RX_CR (0x0004)
|
| 130 | #define BD_ENET_RX_OV (0x0002)
|
| 131 | #define BD_ENET_RX_CL (0x0001)
|
| 132 | #define BD_ENET_RX_STATS (0x01ff)
|
| 133 |
|
| 134 | |
| 135 | * Common to SCC and FCC.
|
| 136 |
|
| 137 | #define BD_ENET_TX_READY (0x8000)
|
| 138 | #define BD_ENET_TX_PAD (0x4000)
|
| 139 | #define BD_ENET_TX_WRAP (0x2000)
|
| 140 | #define BD_ENET_TX_INTR (0x1000)
|
| 141 | #define BD_ENET_TX_LAST (0x0800)
|
| 142 | #define BD_ENET_TX_TC (0x0400)
|
| 143 | #define BD_ENET_TX_DEF (0x0200)
|
| 144 | #define BD_ENET_TX_HB (0x0100)
|
| 145 | #define BD_ENET_TX_LC (0x0080)
|
| 146 | #define BD_ENET_TX_RL (0x0040)
|
| 147 | #define BD_ENET_TX_RCMASK (0x003c)
|
| 148 | #define BD_ENET_TX_UN (0x0002)
|
| 149 | #define BD_ENET_TX_CSL (0x0001)
|
| 150 | #define BD_ENET_TX_STATS (0x03ff)
|
| 151 |
|
| 152 | |
| 153 |
|
| 154 | #define BD_SCC_TX_LAST (0x0800)
|
| 155 |
|
| 156 | |
| 157 |
|
| 158 | #define BD_I2C_START (0x0400)
|
| 159 |
|
| 160 | #ifdef CONFIG_CPM
|
| 161 | int cpm_command(u32 command, u8 opcode);
|
| 162 | #else
|
| 163 | static inline int cpm_command(u32 command, u8 opcode)
|
| 164 | {
|
| 165 | return -ENOSYS;
|
| 166 | }
|
| 167 | #endif
|
| 168 |
|
| 169 | int cpm2_gpiochip_add32(struct device *dev);
|
| 170 |
|
| 171 | #endif
|