version 1.9, 2007/11/24 10:12:44 |
version 1.17, 2007/12/25 14:11:18 |
|
|
extern struct driver saapbus_dr; |
extern struct driver saapbus_dr; |
extern struct driver sapio_dr; |
extern struct driver sapio_dr; |
extern struct driver gpioled_dr; |
extern struct driver gpioled_dr; |
|
extern struct driver saaic_dr; |
|
extern struct driver sartt_dr; |
|
extern struct driver gpiobtn_dr; |
|
extern struct driver saspi_dr; |
|
extern struct driver spisdmmc_dr; |
|
extern struct driver sdmmc_dr; |
|
|
|
|
extern void (*putchar)(char); |
extern void (*putchar)(char); |
extern void sausart_0_putchar(char ch); |
extern void sausart_early_putchar(char ch); |
|
|
/* amount of physical memory, in Bytes */ |
/* amount of physical memory, in Bytes */ |
uint32_t physmem = 16384 /* 16KB :) */; |
uint32_t physmem = 16384 /* 16KB :) */; |
|
|
*/ |
*/ |
struct attachinfo config_attachinfo[] = { |
struct attachinfo config_attachinfo[] = { |
/* child, parent, pminor, loc, intrno, flags */ |
/* child, parent, pminor, loc, intrno, flags */ |
{ "cpu" , "root", 0, 0, 0, 0 }, |
{ "cpu" , "root", 0, 0, -1, 0 }, |
{ "saapbus","root", 0, 0, 0, 0 }, |
{ "saapbus","root", 0, 0, -1, 0 }, |
{ "sapio", "saapbus", 0, 0, 0, 0 }, |
{ "sapio", "saapbus", 0, 0, -1, 0 }, |
{ "gpioled","sapio", 0, 17, 0, 0 }, |
{ "gpioled","sapio", 0, 17, -1, 0 }, |
{ "gpioled","sapio", 0, 18, 0, 0 }, |
{ "gpioled","sapio", 0, 18, -1, 0 }, |
{ NULL, NULL, 0, 0, 0, 0 } |
{ "gpiobtn","sapio", 0, 19, 0, 0 /*controls gpioled/0*/}, |
|
{ "gpiobtn","sapio", 0, 20, 30, 0 /*controls gpioled/1*/}, |
|
// { "sartt", "saapbus", 0, 0, 1, 0 }, |
|
{ "saspi", "saapbus", 0, 0, 0, 0 }, |
|
{ "spisdmmc","saspi", 0, 0, 0, 0 }, |
|
{ "sdmmc", "spisdmmc", 0, 0, 0, 0 }, |
|
// { "saaic", "saapbus", 0, 0, -1, 0 }, |
|
{ NULL, NULL, 0, 0, -1, 0 } |
}; |
}; |
|
|
|
|
|
|
{ "saapbus" , &saapbus_dr, -1 }, |
{ "saapbus" , &saapbus_dr, -1 }, |
{ "sapio", &sapio_dr, -1 }, |
{ "sapio", &sapio_dr, -1 }, |
{ "gpioled", &gpioled_dr, -1 }, |
{ "gpioled", &gpioled_dr, -1 }, |
|
{ "saaic", &saaic_dr, -1 }, |
|
{ "sartt", &sartt_dr, -1 }, |
|
{ "gpiobtn", &gpiobtn_dr, -1 }, |
|
{ "saspi", &saspi_dr, -1 }, |
|
{ "spisdmmc", &spisdmmc_dr, -1 }, |
|
{ "sdmmc", &sdmmc_dr, -1 }, |
{ NULL, NULL, 0 } |
{ NULL, NULL, 0 } |
}; |
}; |
|
|
|
|
/* set FLASH to high-speed */ |
/* set FLASH to high-speed */ |
*AT91C_MC_FMR = AT91C_MC_FWS_0FWS; |
*AT91C_MC_FMR = AT91C_MC_FWS_0FWS; |
|
|
|
/* enable user RESET (magic button on board) */ |
|
*AT91C_RSTC_RMR = AT91C_RSTC_URSTEN | AT91C_RSTC_KEY; |
|
|
/* |
/* |
* Initialize oscillators. |
* Initialize oscillators. |
* Taken from Atmel's examples. |
* Taken from Atmel's examples. |
|
|
while(!(*AT91C_PMC_SR & AT91C_PMC_MCKRDY)) |
while(!(*AT91C_PMC_SR & AT91C_PMC_MCKRDY)) |
; |
; |
|
|
/* enable clock to PIO and USART0 */ |
/* enable clock to all modules */ |
*AT91C_PMC_PCER = AT91C_ID_PIOA | AT91C_ID_US0 AT91C_ID_PDC; |
*AT91C_PMC_PCER = AT91C_ALL_INT; |
|
|
*AT91C_PIOA_PER = (1 << 17 | 1 << 18); |
|
*AT91C_PIOA_OER = (1 << 17 | 1 << 18); |
|
*AT91C_PIOA_CODR= (1 << 17 | 1 << 18); |
|
|
|
/* initialize USART0 (we clock it in PMC above) */ |
/* initialize USART0 (we clock it in PMC above) */ |
|
|
*AT91C_PIOA_PDR = AT91C_PA5_RXD0 | /* Enable RxD0 Pin */ |
*AT91C_PIOA_PDR = AT91C_PA5_RXD0 | /* Enable RxD0 Pin */ |
AT91C_PA6_TXD0; /* Enalbe TxD0 Pin */ |
AT91C_PA6_TXD0; /* Enalbe TxD0 Pin */ |
|
|
*AT91C_US0_CR = AT91C_US_RSTRX | /* Reset Receiver */ |
|
AT91C_US_RSTTX | /* Reset Transmitter */ |
|
AT91C_US_RXDIS | /* Receiver Disable */ |
|
AT91C_US_TXDIS; /* Transmitter Disable */ |
|
|
|
*AT91C_US0_MR = AT91C_US_USMODE_NORMAL | /* Normal Mode */ |
*AT91C_US0_MR = AT91C_US_USMODE_NORMAL | /* Normal Mode */ |
AT91C_US_CLKS_CLOCK | /* Clock = MCK */ |
AT91C_US_CLKS_CLOCK | /* Clock = MCK */ |
AT91C_US_CHRL_8_BITS | /* 8-bit Data */ |
AT91C_US_CHRL_8_BITS | /* 8-bit Data */ |
|
|
|
|
*AT91C_US0_BRGR = 48054857 / 16 / 9600; /* Baud Rate Divisor */ |
*AT91C_US0_BRGR = 48054857 / 16 / 9600; /* Baud Rate Divisor */ |
|
|
|
/* enable DMA transfers on USART0 */ |
|
*AT91C_US0_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN; |
|
|
*AT91C_US0_CR = AT91C_US_RXEN | /* Receiver Enable */ |
*AT91C_US0_CR = AT91C_US_RXEN | /* Receiver Enable */ |
AT91C_US_TXEN; /* Transmitter Enable */ |
AT91C_US_TXEN; /* Transmitter Enable */ |
|
|
/* redefine putchar */ |
/* redefine putchar */ |
putchar = sausart_0_putchar; |
putchar = sausart_early_putchar; |
// putchar(0); |
|
// putchar(0x46); |
|
// putchar(0x46); |
|
} |
} |
|
|
|
|