|
@@ -228,3 +228,155 @@
|
|
|
#define SPI_IRQ_NUM 0 /* SPI interrupt */
|
|
|
#define TMR_IRQ_NUM 1 /* Timer interrupt */
|
|
|
#define UART_IRQ_NUM 2 /* UART interrupt */
|
|
|
+#define WDT_IRQ_NUM 3 /* Watchdog Timer interrupt */
|
|
|
+#define RTC_IRQ_NUM 4 /* RTC interrupt */
|
|
|
+#define KB_IRQ_NUM 6 /* Keyboard Interrupt */
|
|
|
+#define PWM_IRQ_NUM 7 /* Pulse-Width Modulator int. */
|
|
|
+#define INT0_IRQ_NUM 8 /* External INT0 */
|
|
|
+#define INT1_IRQ_NUM 9 /* External INT1 */
|
|
|
+#define INT2_IRQ_NUM 10 /* External INT2 */
|
|
|
+#define INT3_IRQ_NUM 11 /* External INT3 */
|
|
|
+#define IRQ1_IRQ_NUM 16 /* IRQ1 */
|
|
|
+#define IRQ2_IRQ_NUM 17 /* IRQ2 */
|
|
|
+#define IRQ3_IRQ_NUM 18 /* IRQ3 */
|
|
|
+#define IRQ6_IRQ_NUM 19 /* IRQ6 */
|
|
|
+#define IRQ5_IRQ_NUM 20 /* IRQ5 */
|
|
|
+#define SAM_IRQ_NUM 22 /* Sampling Timer for RTC */
|
|
|
+#define EMIQ_IRQ_NUM 23 /* Emulator Interrupt */
|
|
|
+
|
|
|
+/* '328-compatible definitions */
|
|
|
+#define SPIM_IRQ_NUM SPI_IRQ_NUM
|
|
|
+#define TMR1_IRQ_NUM TMR_IRQ_NUM
|
|
|
+
|
|
|
+/*
|
|
|
+ * Here go the bitmasks themselves
|
|
|
+ */
|
|
|
+#define IMR_MSPI (1 << SPI_IRQ_NUM) /* Mask SPI interrupt */
|
|
|
+#define IMR_MTMR (1 << TMR_IRQ_NUM) /* Mask Timer interrupt */
|
|
|
+#define IMR_MUART (1 << UART_IRQ_NUM) /* Mask UART interrupt */
|
|
|
+#define IMR_MWDT (1 << WDT_IRQ_NUM) /* Mask Watchdog Timer interrupt */
|
|
|
+#define IMR_MRTC (1 << RTC_IRQ_NUM) /* Mask RTC interrupt */
|
|
|
+#define IMR_MKB (1 << KB_IRQ_NUM) /* Mask Keyboard Interrupt */
|
|
|
+#define IMR_MPWM (1 << PWM_IRQ_NUM) /* Mask Pulse-Width Modulator int. */
|
|
|
+#define IMR_MINT0 (1 << INT0_IRQ_NUM) /* Mask External INT0 */
|
|
|
+#define IMR_MINT1 (1 << INT1_IRQ_NUM) /* Mask External INT1 */
|
|
|
+#define IMR_MINT2 (1 << INT2_IRQ_NUM) /* Mask External INT2 */
|
|
|
+#define IMR_MINT3 (1 << INT3_IRQ_NUM) /* Mask External INT3 */
|
|
|
+#define IMR_MIRQ1 (1 << IRQ1_IRQ_NUM) /* Mask IRQ1 */
|
|
|
+#define IMR_MIRQ2 (1 << IRQ2_IRQ_NUM) /* Mask IRQ2 */
|
|
|
+#define IMR_MIRQ3 (1 << IRQ3_IRQ_NUM) /* Mask IRQ3 */
|
|
|
+#define IMR_MIRQ6 (1 << IRQ6_IRQ_NUM) /* Mask IRQ6 */
|
|
|
+#define IMR_MIRQ5 (1 << IRQ5_IRQ_NUM) /* Mask IRQ5 */
|
|
|
+#define IMR_MSAM (1 << SAM_IRQ_NUM) /* Mask Sampling Timer for RTC */
|
|
|
+#define IMR_MEMIQ (1 << EMIQ_IRQ_NUM) /* Mask Emulator Interrupt */
|
|
|
+
|
|
|
+/* '328-compatible definitions */
|
|
|
+#define IMR_MSPIM IMR_MSPI
|
|
|
+#define IMR_MTMR1 IMR_MTMR
|
|
|
+
|
|
|
+/*
|
|
|
+ * Interrupt Status Register
|
|
|
+ */
|
|
|
+#define ISR_ADDR 0xfffff30c
|
|
|
+#define ISR LONG_REF(ISR_ADDR)
|
|
|
+
|
|
|
+#define ISR_SPI (1 << SPI_IRQ_NUM) /* SPI interrupt */
|
|
|
+#define ISR_TMR (1 << TMR_IRQ_NUM) /* Timer interrupt */
|
|
|
+#define ISR_UART (1 << UART_IRQ_NUM) /* UART interrupt */
|
|
|
+#define ISR_WDT (1 << WDT_IRQ_NUM) /* Watchdog Timer interrupt */
|
|
|
+#define ISR_RTC (1 << RTC_IRQ_NUM) /* RTC interrupt */
|
|
|
+#define ISR_KB (1 << KB_IRQ_NUM) /* Keyboard Interrupt */
|
|
|
+#define ISR_PWM (1 << PWM_IRQ_NUM) /* Pulse-Width Modulator interrupt */
|
|
|
+#define ISR_INT0 (1 << INT0_IRQ_NUM) /* External INT0 */
|
|
|
+#define ISR_INT1 (1 << INT1_IRQ_NUM) /* External INT1 */
|
|
|
+#define ISR_INT2 (1 << INT2_IRQ_NUM) /* External INT2 */
|
|
|
+#define ISR_INT3 (1 << INT3_IRQ_NUM) /* External INT3 */
|
|
|
+#define ISR_IRQ1 (1 << IRQ1_IRQ_NUM) /* IRQ1 */
|
|
|
+#define ISR_IRQ2 (1 << IRQ2_IRQ_NUM) /* IRQ2 */
|
|
|
+#define ISR_IRQ3 (1 << IRQ3_IRQ_NUM) /* IRQ3 */
|
|
|
+#define ISR_IRQ6 (1 << IRQ6_IRQ_NUM) /* IRQ6 */
|
|
|
+#define ISR_IRQ5 (1 << IRQ5_IRQ_NUM) /* IRQ5 */
|
|
|
+#define ISR_SAM (1 << SAM_IRQ_NUM) /* Sampling Timer for RTC */
|
|
|
+#define ISR_EMIQ (1 << EMIQ_IRQ_NUM) /* Emulator Interrupt */
|
|
|
+
|
|
|
+/* '328-compatible definitions */
|
|
|
+#define ISR_SPIM ISR_SPI
|
|
|
+#define ISR_TMR1 ISR_TMR
|
|
|
+
|
|
|
+/*
|
|
|
+ * Interrupt Pending Register
|
|
|
+ */
|
|
|
+#define IPR_ADDR 0xfffff30c
|
|
|
+#define IPR LONG_REF(IPR_ADDR)
|
|
|
+
|
|
|
+#define IPR_SPI (1 << SPI_IRQ_NUM) /* SPI interrupt */
|
|
|
+#define IPR_TMR (1 << TMR_IRQ_NUM) /* Timer interrupt */
|
|
|
+#define IPR_UART (1 << UART_IRQ_NUM) /* UART interrupt */
|
|
|
+#define IPR_WDT (1 << WDT_IRQ_NUM) /* Watchdog Timer interrupt */
|
|
|
+#define IPR_RTC (1 << RTC_IRQ_NUM) /* RTC interrupt */
|
|
|
+#define IPR_KB (1 << KB_IRQ_NUM) /* Keyboard Interrupt */
|
|
|
+#define IPR_PWM (1 << PWM_IRQ_NUM) /* Pulse-Width Modulator interrupt */
|
|
|
+#define IPR_INT0 (1 << INT0_IRQ_NUM) /* External INT0 */
|
|
|
+#define IPR_INT1 (1 << INT1_IRQ_NUM) /* External INT1 */
|
|
|
+#define IPR_INT2 (1 << INT2_IRQ_NUM) /* External INT2 */
|
|
|
+#define IPR_INT3 (1 << INT3_IRQ_NUM) /* External INT3 */
|
|
|
+#define IPR_IRQ1 (1 << IRQ1_IRQ_NUM) /* IRQ1 */
|
|
|
+#define IPR_IRQ2 (1 << IRQ2_IRQ_NUM) /* IRQ2 */
|
|
|
+#define IPR_IRQ3 (1 << IRQ3_IRQ_NUM) /* IRQ3 */
|
|
|
+#define IPR_IRQ6 (1 << IRQ6_IRQ_NUM) /* IRQ6 */
|
|
|
+#define IPR_IRQ5 (1 << IRQ5_IRQ_NUM) /* IRQ5 */
|
|
|
+#define IPR_SAM (1 << SAM_IRQ_NUM) /* Sampling Timer for RTC */
|
|
|
+#define IPR_EMIQ (1 << EMIQ_IRQ_NUM) /* Emulator Interrupt */
|
|
|
+
|
|
|
+/* '328-compatible definitions */
|
|
|
+#define IPR_SPIM IPR_SPI
|
|
|
+#define IPR_TMR1 IPR_TMR
|
|
|
+
|
|
|
+/**********
|
|
|
+ *
|
|
|
+ * 0xFFFFF4xx -- Parallel Ports
|
|
|
+ *
|
|
|
+ **********/
|
|
|
+
|
|
|
+/*
|
|
|
+ * Port A
|
|
|
+ */
|
|
|
+#define PADIR_ADDR 0xfffff400 /* Port A direction reg */
|
|
|
+#define PADATA_ADDR 0xfffff401 /* Port A data register */
|
|
|
+#define PAPUEN_ADDR 0xfffff402 /* Port A Pull-Up enable reg */
|
|
|
+
|
|
|
+#define PADIR BYTE_REF(PADIR_ADDR)
|
|
|
+#define PADATA BYTE_REF(PADATA_ADDR)
|
|
|
+#define PAPUEN BYTE_REF(PAPUEN_ADDR)
|
|
|
+
|
|
|
+#define PA(x) (1 << (x))
|
|
|
+
|
|
|
+/*
|
|
|
+ * Port B
|
|
|
+ */
|
|
|
+#define PBDIR_ADDR 0xfffff408 /* Port B direction reg */
|
|
|
+#define PBDATA_ADDR 0xfffff409 /* Port B data register */
|
|
|
+#define PBPUEN_ADDR 0xfffff40a /* Port B Pull-Up enable reg */
|
|
|
+#define PBSEL_ADDR 0xfffff40b /* Port B Select Register */
|
|
|
+
|
|
|
+#define PBDIR BYTE_REF(PBDIR_ADDR)
|
|
|
+#define PBDATA BYTE_REF(PBDATA_ADDR)
|
|
|
+#define PBPUEN BYTE_REF(PBPUEN_ADDR)
|
|
|
+#define PBSEL BYTE_REF(PBSEL_ADDR)
|
|
|
+
|
|
|
+#define PB(x) (1 << (x))
|
|
|
+
|
|
|
+#define PB_CSB0 0x01 /* Use CSB0 as PB[0] */
|
|
|
+#define PB_CSB1 0x02 /* Use CSB1 as PB[1] */
|
|
|
+#define PB_CSC0_RAS0 0x04 /* Use CSC0/RAS0 as PB[2] */
|
|
|
+#define PB_CSC1_RAS1 0x08 /* Use CSC1/RAS1 as PB[3] */
|
|
|
+#define PB_CSD0_CAS0 0x10 /* Use CSD0/CAS0 as PB[4] */
|
|
|
+#define PB_CSD1_CAS1 0x20 /* Use CSD1/CAS1 as PB[5] */
|
|
|
+#define PB_TIN_TOUT 0x40 /* Use TIN/TOUT as PB[6] */
|
|
|
+#define PB_PWMO 0x80 /* Use PWMO as PB[7] */
|
|
|
+
|
|
|
+/*
|
|
|
+ * Port C
|
|
|
+ */
|
|
|
+#define PCDIR_ADDR 0xfffff410 /* Port C direction reg */
|
|
|
+#define PCDATA_ADDR 0xfffff411 /* Port C data register */
|