|
@@ -155,3 +155,55 @@ typedef struct smc_uart {
|
|
ushort smc_tbase; /* Tx Buffer descriptor base address */
|
|
ushort smc_tbase; /* Tx Buffer descriptor base address */
|
|
u_char smc_rfcr; /* Rx function code */
|
|
u_char smc_rfcr; /* Rx function code */
|
|
u_char smc_tfcr; /* Tx function code */
|
|
u_char smc_tfcr; /* Tx function code */
|
|
|
|
+ ushort smc_mrblr; /* Max receive buffer length */
|
|
|
|
+ uint smc_rstate; /* Internal */
|
|
|
|
+ uint smc_idp; /* Internal */
|
|
|
|
+ ushort smc_rbptr; /* Internal */
|
|
|
|
+ ushort smc_ibc; /* Internal */
|
|
|
|
+ uint smc_rxtmp; /* Internal */
|
|
|
|
+ uint smc_tstate; /* Internal */
|
|
|
|
+ uint smc_tdp; /* Internal */
|
|
|
|
+ ushort smc_tbptr; /* Internal */
|
|
|
|
+ ushort smc_tbc; /* Internal */
|
|
|
|
+ uint smc_txtmp; /* Internal */
|
|
|
|
+ ushort smc_maxidl; /* Maximum idle characters */
|
|
|
|
+ ushort smc_tmpidl; /* Temporary idle counter */
|
|
|
|
+ ushort smc_brklen; /* Last received break length */
|
|
|
|
+ ushort smc_brkec; /* rcv'd break condition counter */
|
|
|
|
+ ushort smc_brkcr; /* xmt break count register */
|
|
|
|
+ ushort smc_rmask; /* Temporary bit mask */
|
|
|
|
+} smc_uart_t;
|
|
|
|
+
|
|
|
|
+/* Function code bits.
|
|
|
|
+*/
|
|
|
|
+#define SMC_EB ((u_char)0x10) /* Set big endian byte order */
|
|
|
|
+
|
|
|
|
+/* SMC uart mode register.
|
|
|
|
+*/
|
|
|
|
+#define SMCMR_REN ((ushort)0x0001)
|
|
|
|
+#define SMCMR_TEN ((ushort)0x0002)
|
|
|
|
+#define SMCMR_DM ((ushort)0x000c)
|
|
|
|
+#define SMCMR_SM_GCI ((ushort)0x0000)
|
|
|
|
+#define SMCMR_SM_UART ((ushort)0x0020)
|
|
|
|
+#define SMCMR_SM_TRANS ((ushort)0x0030)
|
|
|
|
+#define SMCMR_SM_MASK ((ushort)0x0030)
|
|
|
|
+#define SMCMR_PM_EVEN ((ushort)0x0100) /* Even parity, else odd */
|
|
|
|
+#define SMCMR_REVD SMCMR_PM_EVEN
|
|
|
|
+#define SMCMR_PEN ((ushort)0x0200) /* Parity enable */
|
|
|
|
+#define SMCMR_BS SMCMR_PEN
|
|
|
|
+#define SMCMR_SL ((ushort)0x0400) /* Two stops, else one */
|
|
|
|
+#define SMCR_CLEN_MASK ((ushort)0x7800) /* Character length */
|
|
|
|
+#define smcr_mk_clen(C) (((C) << 11) & SMCR_CLEN_MASK)
|
|
|
|
+
|
|
|
|
+/* SMC2 as Centronics parallel printer. It is half duplex, in that
|
|
|
|
+ * it can only receive or transmit. The parameter ram values for
|
|
|
|
+ * each direction are either unique or properly overlap, so we can
|
|
|
|
+ * include them in one structure.
|
|
|
|
+ */
|
|
|
|
+typedef struct smc_centronics {
|
|
|
|
+ ushort scent_rbase;
|
|
|
|
+ ushort scent_tbase;
|
|
|
|
+ u_char scent_cfcr;
|
|
|
|
+ u_char scent_smask;
|
|
|
|
+ ushort scent_mrblr;
|
|
|
|
+ uint scent_rstate;
|