1#include <sys/cdefs.h> 2__FBSDID("$FreeBSD$"); 3 4#include <sys/param.h> 5 6#include "at91rm9200_lowlevel.h" 7#include "at91rm9200.h" 8#include "emac.h" 9#include "lib.h" 10#include "ee.h" 11#include "board.h" 12#include "sd-card.h" 13 14unsigned char mac[6] = { 0x00, 0x0e, 0x42, 0x02, 0x00, 0x28 }; 15 16static void USART0_Init(); 17static void USART1_Init(); 18static void USART2_Init(); 19static void USART3_Init(); 20static void DS1672_Init(); 21 22static void 23DS1672_Init() { 24 char buf[] = {0x00, 0xa9}; 25 26 EEWrite(0xd0, buf, sizeof(buf)); 27} 28 29static void 30USART0_Init() { 31 32 AT91PS_PIO pPio = (AT91PS_PIO)AT91C_BASE_PIOA; 33 AT91PS_PMC pPMC = (AT91PS_PMC)AT91C_BASE_PMC; 34 35 // setup GPIO 36 pPio->PIO_ASR = AT91C_PA17_TXD0 | AT91C_PA18_RXD0; 37 pPio->PIO_PDR = AT91C_PA17_TXD0 | AT91C_PA18_RXD0; 38 39 // enable power 40 pPMC->PMC_PCER = 1u << AT91C_ID_US0; 41} 42 43static void 44USART1_Init() { 45 46 AT91PS_PIO pPio = (AT91PS_PIO)AT91C_BASE_PIOA; 47 AT91PS_PMC pPMC = (AT91PS_PMC)AT91C_BASE_PMC; 48 49 // setup GPIO 50 pPio->PIO_ASR = AT91C_PB20_TXD1 | AT91C_PB21_RXD1; 51 pPio->PIO_PDR = AT91C_PB20_TXD1 | AT91C_PB21_RXD1; 52 53 // enable power 54 pPMC->PMC_PCER = 1u << AT91C_ID_US1; 55} 56 57static void 58USART2_Init() { 59 60 AT91PS_PIO pPio = (AT91PS_PIO)AT91C_BASE_PIOA; 61 AT91PS_PMC pPMC = (AT91PS_PMC)AT91C_BASE_PMC; 62 63 // setup GPIO 64 pPio->PIO_ASR = AT91C_PA23_TXD2 | AT91C_PA22_RXD2; 65 pPio->PIO_PDR = AT91C_PA23_TXD2 | AT91C_PA22_RXD2; 66 67 // enable power 68 pPMC->PMC_PCER = 1u << AT91C_ID_US2; 69} 70 71static void 72USART3_Init() { 73 74 AT91PS_PIO pPio = (AT91PS_PIO)AT91C_BASE_PIOA; 75 AT91PS_PMC pPMC = (AT91PS_PMC)AT91C_BASE_PMC; 76 77 // setup GPIO 78 pPio->PIO_BSR = AT91C_PA5_TXD3 | AT91C_PA6_RXD3; 79 pPio->PIO_PDR = AT91C_PA5_TXD3 | AT91C_PA6_RXD3; 80 81 // enable power 82 pPMC->PMC_PCER = 1u << AT91C_ID_US3; 83} 84 85void 86board_init(void) 87{ 88 89 printf("\n\n"); 90 printf("BWCT FSB-A920-1\n"); 91 printf("http://www.bwct.de\n"); 92 printf("\n"); 93#if defined(SDRAM_128M) 94 printf("AT92RM9200 180MHz 128MB\n"); 95#else 96 printf("AT92RM9200 180MHz 64MB\n"); 97#endif 98 printf("Initialising USART0\n"); 99 USART0_Init(); 100 printf("Initialising USART1\n"); 101 USART1_Init(); 102 printf("Initialising USART2\n"); 103 USART2_Init(); 104 printf("Initialising USART3\n"); 105 USART3_Init(); 106 printf("Initialising TWI\n"); 107 EEInit(); 108 printf("Initialising DS1672\n"); 109 DS1672_Init(); 110 printf("Initialising Ethernet\n"); 111 printf("MAC %x:%x:%x:%x:%x:%x\n", mac[0], 112 mac[1], mac[2], mac[3], mac[4], mac[5]); 113 EMAC_Init(); 114 EMAC_SetMACAddress(mac); 115 printf("Initialising SD-card\n"); 116 sdcard_init(); 117} 118 119#include "../bootspi/ee.c" 120 121int 122drvread(void *buf, unsigned lba, unsigned nblk) 123{ 124 return (MCI_read((char *)buf, lba << 9, nblk << 9)); 125} 126