|
@@ -660,3 +660,186 @@
|
|
|
|
|
|
/* '328-compatible definitions */
|
|
/* '328-compatible definitions */
|
|
#define SPIMCONT_SPIMIRQ SPIMCONT_IRQ
|
|
#define SPIMCONT_SPIMIRQ SPIMCONT_IRQ
|
|
|
|
+#define SPIMCONT_SPIMEN SPIMCONT_ENABLE
|
|
|
|
+
|
|
|
|
+/**********
|
|
|
|
+ *
|
|
|
|
+ * 0xFFFFF9xx -- UART
|
|
|
|
+ *
|
|
|
|
+ **********/
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * UART Status/Control Register
|
|
|
|
+ */
|
|
|
|
+#define USTCNT_ADDR 0xfffff900
|
|
|
|
+#define USTCNT WORD_REF(USTCNT_ADDR)
|
|
|
|
+
|
|
|
|
+#define USTCNT_TXAE 0x0001 /* Transmitter Available Interrupt Enable */
|
|
|
|
+#define USTCNT_TXHE 0x0002 /* Transmitter Half Empty Enable */
|
|
|
|
+#define USTCNT_TXEE 0x0004 /* Transmitter Empty Interrupt Enable */
|
|
|
|
+#define USTCNT_RXRE 0x0008 /* Receiver Ready Interrupt Enable */
|
|
|
|
+#define USTCNT_RXHE 0x0010 /* Receiver Half-Full Interrupt Enable */
|
|
|
|
+#define USTCNT_RXFE 0x0020 /* Receiver Full Interrupt Enable */
|
|
|
|
+#define USTCNT_CTSD 0x0040 /* CTS Delta Interrupt Enable */
|
|
|
|
+#define USTCNT_ODEN 0x0080 /* Old Data Interrupt Enable */
|
|
|
|
+#define USTCNT_8_7 0x0100 /* Eight or seven-bit transmission */
|
|
|
|
+#define USTCNT_STOP 0x0200 /* Stop bit transmission */
|
|
|
|
+#define USTCNT_ODD 0x0400 /* Odd Parity */
|
|
|
|
+#define USTCNT_PEN 0x0800 /* Parity Enable */
|
|
|
|
+#define USTCNT_CLKM 0x1000 /* Clock Mode Select */
|
|
|
|
+#define USTCNT_TXEN 0x2000 /* Transmitter Enable */
|
|
|
|
+#define USTCNT_RXEN 0x4000 /* Receiver Enable */
|
|
|
|
+#define USTCNT_UEN 0x8000 /* UART Enable */
|
|
|
|
+
|
|
|
|
+/* '328-compatible definitions */
|
|
|
|
+#define USTCNT_TXAVAILEN USTCNT_TXAE
|
|
|
|
+#define USTCNT_TXHALFEN USTCNT_TXHE
|
|
|
|
+#define USTCNT_TXEMPTYEN USTCNT_TXEE
|
|
|
|
+#define USTCNT_RXREADYEN USTCNT_RXRE
|
|
|
|
+#define USTCNT_RXHALFEN USTCNT_RXHE
|
|
|
|
+#define USTCNT_RXFULLEN USTCNT_RXFE
|
|
|
|
+#define USTCNT_CTSDELTAEN USTCNT_CTSD
|
|
|
|
+#define USTCNT_ODD_EVEN USTCNT_ODD
|
|
|
|
+#define USTCNT_PARITYEN USTCNT_PEN
|
|
|
|
+#define USTCNT_CLKMODE USTCNT_CLKM
|
|
|
|
+#define USTCNT_UARTEN USTCNT_UEN
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * UART Baud Control Register
|
|
|
|
+ */
|
|
|
|
+#define UBAUD_ADDR 0xfffff902
|
|
|
|
+#define UBAUD WORD_REF(UBAUD_ADDR)
|
|
|
|
+
|
|
|
|
+#define UBAUD_PRESCALER_MASK 0x003f /* Actual divisor is 65 - PRESCALER */
|
|
|
|
+#define UBAUD_PRESCALER_SHIFT 0
|
|
|
|
+#define UBAUD_DIVIDE_MASK 0x0700 /* Baud Rate freq. divizor */
|
|
|
|
+#define UBAUD_DIVIDE_SHIFT 8
|
|
|
|
+#define UBAUD_BAUD_SRC 0x0800 /* Baud Rate Source */
|
|
|
|
+#define UBAUD_UCLKDIR 0x2000 /* UCLK Direction */
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * UART Receiver Register
|
|
|
|
+ */
|
|
|
|
+#define URX_ADDR 0xfffff904
|
|
|
|
+#define URX WORD_REF(URX_ADDR)
|
|
|
|
+
|
|
|
|
+#define URX_RXDATA_ADDR 0xfffff905
|
|
|
|
+#define URX_RXDATA BYTE_REF(URX_RXDATA_ADDR)
|
|
|
|
+
|
|
|
|
+#define URX_RXDATA_MASK 0x00ff /* Received data */
|
|
|
|
+#define URX_RXDATA_SHIFT 0
|
|
|
|
+#define URX_PARITY_ERROR 0x0100 /* Parity Error */
|
|
|
|
+#define URX_BREAK 0x0200 /* Break Detected */
|
|
|
|
+#define URX_FRAME_ERROR 0x0400 /* Framing Error */
|
|
|
|
+#define URX_OVRUN 0x0800 /* Serial Overrun */
|
|
|
|
+#define URX_OLD_DATA 0x1000 /* Old data in FIFO */
|
|
|
|
+#define URX_DATA_READY 0x2000 /* Data Ready (FIFO not empty) */
|
|
|
|
+#define URX_FIFO_HALF 0x4000 /* FIFO is Half-Full */
|
|
|
|
+#define URX_FIFO_FULL 0x8000 /* FIFO is Full */
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * UART Transmitter Register
|
|
|
|
+ */
|
|
|
|
+#define UTX_ADDR 0xfffff906
|
|
|
|
+#define UTX WORD_REF(UTX_ADDR)
|
|
|
|
+
|
|
|
|
+#define UTX_TXDATA_ADDR 0xfffff907
|
|
|
|
+#define UTX_TXDATA BYTE_REF(UTX_TXDATA_ADDR)
|
|
|
|
+
|
|
|
|
+#define UTX_TXDATA_MASK 0x00ff /* Data to be transmitted */
|
|
|
|
+#define UTX_TXDATA_SHIFT 0
|
|
|
|
+#define UTX_CTS_DELTA 0x0100 /* CTS changed */
|
|
|
|
+#define UTX_CTS_STAT 0x0200 /* CTS State */
|
|
|
|
+#define UTX_BUSY 0x0400 /* FIFO is busy, sending a character */
|
|
|
|
+#define UTX_NOCTS 0x0800 /* Ignore CTS */
|
|
|
|
+#define UTX_SEND_BREAK 0x1000 /* Send a BREAK */
|
|
|
|
+#define UTX_TX_AVAIL 0x2000 /* Transmit FIFO has a slot available */
|
|
|
|
+#define UTX_FIFO_HALF 0x4000 /* Transmit FIFO is half empty */
|
|
|
|
+#define UTX_FIFO_EMPTY 0x8000 /* Transmit FIFO is empty */
|
|
|
|
+
|
|
|
|
+/* '328-compatible definitions */
|
|
|
|
+#define UTX_CTS_STATUS UTX_CTS_STAT
|
|
|
|
+#define UTX_IGNORE_CTS UTX_NOCTS
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * UART Miscellaneous Register
|
|
|
|
+ */
|
|
|
|
+#define UMISC_ADDR 0xfffff908
|
|
|
|
+#define UMISC WORD_REF(UMISC_ADDR)
|
|
|
|
+
|
|
|
|
+#define UMISC_TX_POL 0x0004 /* Transmit Polarity */
|
|
|
|
+#define UMISC_RX_POL 0x0008 /* Receive Polarity */
|
|
|
|
+#define UMISC_IRDA_LOOP 0x0010 /* IrDA Loopback Enable */
|
|
|
|
+#define UMISC_IRDA_EN 0x0020 /* Infra-Red Enable */
|
|
|
|
+#define UMISC_RTS 0x0040 /* Set RTS status */
|
|
|
|
+#define UMISC_RTSCONT 0x0080 /* Choose RTS control */
|
|
|
|
+#define UMISC_IR_TEST 0x0400 /* IRDA Test Enable */
|
|
|
|
+#define UMISC_BAUD_RESET 0x0800 /* Reset Baud Rate Generation Counters */
|
|
|
|
+#define UMISC_LOOP 0x1000 /* Serial Loopback Enable */
|
|
|
|
+#define UMISC_FORCE_PERR 0x2000 /* Force Parity Error */
|
|
|
|
+#define UMISC_CLKSRC 0x4000 /* Clock Source */
|
|
|
|
+#define UMISC_BAUD_TEST 0x8000 /* Enable Baud Test Mode */
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * UART Non-integer Prescaler Register
|
|
|
|
+ */
|
|
|
|
+#define NIPR_ADDR 0xfffff90a
|
|
|
|
+#define NIPR WORD_REF(NIPR_ADDR)
|
|
|
|
+
|
|
|
|
+#define NIPR_STEP_VALUE_MASK 0x00ff /* NI prescaler step value */
|
|
|
|
+#define NIPR_STEP_VALUE_SHIFT 0
|
|
|
|
+#define NIPR_SELECT_MASK 0x0700 /* Tap Selection */
|
|
|
|
+#define NIPR_SELECT_SHIFT 8
|
|
|
|
+#define NIPR_PRE_SEL 0x8000 /* Non-integer prescaler select */
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* generalization of uart control registers to support multiple ports: */
|
|
|
|
+typedef volatile struct {
|
|
|
|
+ volatile unsigned short int ustcnt;
|
|
|
|
+ volatile unsigned short int ubaud;
|
|
|
|
+ union {
|
|
|
|
+ volatile unsigned short int w;
|
|
|
|
+ struct {
|
|
|
|
+ volatile unsigned char status;
|
|
|
|
+ volatile unsigned char rxdata;
|
|
|
|
+ } b;
|
|
|
|
+ } urx;
|
|
|
|
+ union {
|
|
|
|
+ volatile unsigned short int w;
|
|
|
|
+ struct {
|
|
|
|
+ volatile unsigned char status;
|
|
|
|
+ volatile unsigned char txdata;
|
|
|
|
+ } b;
|
|
|
|
+ } utx;
|
|
|
|
+ volatile unsigned short int umisc;
|
|
|
|
+ volatile unsigned short int nipr;
|
|
|
|
+ volatile unsigned short int pad1;
|
|
|
|
+ volatile unsigned short int pad2;
|
|
|
|
+} __attribute__((packed)) m68328_uart;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/**********
|
|
|
|
+ *
|
|
|
|
+ * 0xFFFFFAxx -- LCD Controller
|
|
|
|
+ *
|
|
|
|
+ **********/
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * LCD Screen Starting Address Register
|
|
|
|
+ */
|
|
|
|
+#define LSSA_ADDR 0xfffffa00
|
|
|
|
+#define LSSA LONG_REF(LSSA_ADDR)
|
|
|
|
+
|
|
|
|
+#define LSSA_SSA_MASK 0x1ffffffe /* Bits 0 and 29-31 are reserved */
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * LCD Virtual Page Width Register
|
|
|
|
+ */
|
|
|
|
+#define LVPW_ADDR 0xfffffa05
|
|
|
|
+#define LVPW BYTE_REF(LVPW_ADDR)
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * LCD Screen Width Register (not compatible with '328 !!!)
|
|
|
|
+ */
|
|
|
|
+#define LXMAX_ADDR 0xfffffa08
|
|
|
|
+#define LXMAX WORD_REF(LXMAX_ADDR)
|