add selection of console driver for ifxmips

SVN-Revision: 9936
master
John Crispin 17 years ago
parent 6bdd0ef590
commit c61b903d05
  1. 3
      target/linux/ifxmips/config-2.6.23
  2. 13
      target/linux/ifxmips/files/arch/mips/ifxmips/prom.c
  3. 33
      target/linux/ifxmips/files/include/asm-mips/ifxmips/ifxmips.h

@ -60,12 +60,13 @@ CONFIG_IFXMIPS=y
CONFIG_IFXMIPS_ASC_UART=y CONFIG_IFXMIPS_ASC_UART=y
CONFIG_IFXMIPS_EEPROM=y CONFIG_IFXMIPS_EEPROM=y
CONFIG_IFXMIPS_GPIO=y CONFIG_IFXMIPS_GPIO=y
CONFIG_IFXMIPS_GPIO_RST_BTN=y
CONFIG_IFXMIPS_LED=y CONFIG_IFXMIPS_LED=y
CONFIG_IFXMIPS_MEI=y CONFIG_IFXMIPS_MEI=y
CONFIG_IFXMIPS_MII0=y CONFIG_IFXMIPS_MII0=y
# CONFIG_IFXMIPS_MII1 is not set # CONFIG_IFXMIPS_MII1 is not set
CONFIG_IFXMIPS_SSC=y CONFIG_IFXMIPS_SSC=y
# CONFIG_IFXMIPS_USE_CONSOLE0 is not set
CONFIG_IFXMIPS_USE_CONSOLE1=y
CONFIG_IFXMIPS_WDT=y CONFIG_IFXMIPS_WDT=y
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_IRQ_CPU=y CONFIG_IRQ_CPU=y

@ -29,6 +29,13 @@
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/ifxmips/ifxmips.h> #include <asm/ifxmips/ifxmips.h>
#ifdef CONFIG_IFXMIPS_USE_CONSOLE0
#define ASC_OFFSET 0
#elif CONFIG_IFXMIPS_USE_CONSOLE1
#define ASC_OFFSET IFXMIPS_ASC1_BASE_OFFSET
#else
#error a tty for the console must be selected
#endif
static char buf[1024]; static char buf[1024];
void void
@ -39,11 +46,11 @@ prom_free_prom_memory (void)
void void
prom_putchar (char c) prom_putchar (char c)
{ {
while ((readl(IFXMIPS_ASC1_FSTAT) & ASCFSTAT_TXFFLMASK) >> ASCFSTAT_TXFFLOFF); while ((readl(IFXMIPS_ASC0_FSTAT + ASC_OFFSET) & ASCFSTAT_TXFFLMASK) >> ASCFSTAT_TXFFLOFF);
if (c == '\n') if (c == '\n')
writel('\r', IFXMIPS_ASC1_TBUF); writel('\r', IFXMIPS_ASC0_TBUF + ASC_OFFSET);
writel(c, IFXMIPS_ASC1_TBUF); writel(c, IFXMIPS_ASC0_TBUF + ASC_OFFSET);
} }
void void

@ -34,17 +34,18 @@
#define IFXMIPS_FLASH_MAX 0x2000000 #define IFXMIPS_FLASH_MAX 0x2000000
/*------------ ASC1 */ /*------------ ASC0 */
#define IFXMIPS_ASC1_BASE_ADDR (KSEG1 + 0x1E100C00) #define IFXMIPS_ASC0_BASE_ADDR (KSEG1 + 0x1E400C00)
#define IFXMIPS_ASC1_BASE_OFFSET ((0x1E100C00 - 0x1E400C00) / sizeof(u32))
/* FIFO status register */ /* FIFO status register */
#define IFXMIPS_ASC1_FSTAT ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0048)) #define IFXMIPS_ASC0_FSTAT ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0048))
#define ASCFSTAT_TXFFLMASK 0x3F00 #define ASCFSTAT_TXFFLMASK 0x3F00
#define ASCFSTAT_TXFFLOFF 8 #define ASCFSTAT_TXFFLOFF 8
/* ASC1 transmit buffer */ /* ASC1 transmit buffer */
#define IFXMIPS_ASC1_TBUF ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0020)) #define IFXMIPS_ASC0_TBUF ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0020))
/* channel operating modes */ /* channel operating modes */
#define ASCOPT_CSIZE 0x3 #define ASCOPT_CSIZE 0x3
@ -56,43 +57,43 @@
#define ASCOPT_CREAD 0x20 #define ASCOPT_CREAD 0x20
/* hardware modified control register */ /* hardware modified control register */
#define IFXMIPS_ASC1_WHBSTATE ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0018)) #define IFXMIPS_ASC0_WHBSTATE ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0018))
/* receive buffer register */ /* receive buffer register */
#define IFXMIPS_ASC1_RBUF ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0024)) #define IFXMIPS_ASC0_RBUF ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0024))
/* status register */ /* status register */
#define IFXMIPS_ASC1_STATE ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0014)) #define IFXMIPS_ASC0_STATE ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0014))
/* interrupt control */ /* interrupt control */
#define IFXMIPS_ASC1_IRNCR ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x00F8)) #define IFXMIPS_ASC0_IRNCR ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x00F8))
#define ASC_IRNCR_TIR 0x4 #define ASC_IRNCR_TIR 0x4
#define ASC_IRNCR_RIR 0x2 #define ASC_IRNCR_RIR 0x2
#define ASC_IRNCR_EIR 0x4 #define ASC_IRNCR_EIR 0x4
/* clock control */ /* clock control */
#define IFXMIPS_ASC1_CLC ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0000)) #define IFXMIPS_ASC0_CLC ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0000))
#define IFXMIPS_ASC1_CLC_DISS 0x2 #define IFXMIPS_ASC0_CLC_DISS 0x2
/* port input select register */ /* port input select register */
#define IFXMIPS_ASC1_PISEL ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0004)) #define IFXMIPS_ASC0_PISEL ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0004))
/* tx fifo */ /* tx fifo */
#define IFXMIPS_ASC1_TXFCON ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0044)) #define IFXMIPS_ASC0_TXFCON ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0044))
/* rx fifo */ /* rx fifo */
#define IFXMIPS_ASC1_RXFCON ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0040)) #define IFXMIPS_ASC0_RXFCON ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0040))
/* control */ /* control */
#define IFXMIPS_ASC1_CON ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0010)) #define IFXMIPS_ASC0_CON ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0010))
/* timer reload */ /* timer reload */
#define IFXMIPS_ASC1_BG ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x0050)) #define IFXMIPS_ASC0_BG ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x0050))
/* int enable */ /* int enable */
#define IFXMIPS_ASC1_IRNREN ((u32*)(IFXMIPS_ASC1_BASE_ADDR + 0x00F4)) #define IFXMIPS_ASC0_IRNREN ((u32*)(IFXMIPS_ASC0_BASE_ADDR + 0x00F4))
#define ASC_IRNREN_RX_BUF 0x8 #define ASC_IRNREN_RX_BUF 0x8
#define ASC_IRNREN_TX_BUF 0x4 #define ASC_IRNREN_TX_BUF 0x4

Loading…
Cancel
Save