|
|
|
@ -35,8 +35,9 @@ |
|
|
|
|
/*
|
|
|
|
|
* Miscelaneous platform dependent initialisations |
|
|
|
|
*/ |
|
|
|
|
#define CMC_BASIC 1 |
|
|
|
|
#define CMC_HP_BASIC 1 |
|
|
|
|
#define CMC_PU2 2 |
|
|
|
|
#define CMC_BASIC 4 |
|
|
|
|
|
|
|
|
|
int hw_detect (void); |
|
|
|
|
|
|
|
|
@ -74,14 +75,14 @@ int board_init (void) |
|
|
|
|
/*
|
|
|
|
|
* On CMC-PU2 board configure PB3-PB6 to input without pull ups to |
|
|
|
|
* clear the duo LEDs (the external pull downs assure a proper |
|
|
|
|
* signal). On CMC-BASIC set PB3-PB6 to output and drive it |
|
|
|
|
* high, to configure current meassurement on AINx. |
|
|
|
|
* signal). On CMC-BASIC and CMC-HP-BASIC set PB3-PB6 to output and |
|
|
|
|
* drive it high, to configure current measurement on AINx. |
|
|
|
|
*/ |
|
|
|
|
if (hw_detect() & CMC_PU2) { |
|
|
|
|
piob->PIO_ODR = AT91C_PIO_PB3 | AT91C_PIO_PB4 | |
|
|
|
|
AT91C_PIO_PB5 | AT91C_PIO_PB6; |
|
|
|
|
} |
|
|
|
|
else if (hw_detect() & CMC_BASIC) { |
|
|
|
|
else if ((hw_detect() & CMC_BASIC) || (hw_detect() & CMC_HP_BASIC)) { |
|
|
|
|
piob->PIO_SODR = AT91C_PIO_PB3 | AT91C_PIO_PB4 | |
|
|
|
|
AT91C_PIO_PB5 | AT91C_PIO_PB6; |
|
|
|
|
piob->PIO_OER = AT91C_PIO_PB3 | AT91C_PIO_PB4 | |
|
|
|
@ -119,6 +120,8 @@ int checkboard (void) |
|
|
|
|
puts ("Board: CMC-PU2 (Rittal GmbH)\n"); |
|
|
|
|
else if (hw_detect() & CMC_BASIC) |
|
|
|
|
puts ("Board: CMC-BASIC (Rittal GmbH)\n"); |
|
|
|
|
else if (hw_detect() & CMC_HP_BASIC) |
|
|
|
|
puts ("Board: CMC-HP-BASIC (Rittal GmbH)\n"); |
|
|
|
|
else |
|
|
|
|
puts ("Board: unknown\n"); |
|
|
|
|
return 0; |
|
|
|
@ -135,7 +138,17 @@ int hw_detect (void) |
|
|
|
|
pio->PIO_ODR = AT91C_PIO_PB12; |
|
|
|
|
pio->PIO_PPUDR = AT91C_PIO_PB12; |
|
|
|
|
pio->PIO_PER = AT91C_PIO_PB12; |
|
|
|
|
|
|
|
|
|
/* configure PB13 as input without pull up */ |
|
|
|
|
pio->PIO_ODR = AT91C_PIO_PB13; |
|
|
|
|
pio->PIO_PPUDR = AT91C_PIO_PB13; |
|
|
|
|
pio->PIO_PER = AT91C_PIO_PB13; |
|
|
|
|
|
|
|
|
|
/* read board identification pin */ |
|
|
|
|
return ((pio->PIO_PDSR & AT91C_PIO_PB12) ? CMC_PU2 : CMC_BASIC); |
|
|
|
|
if (pio->PIO_PDSR & AT91C_PIO_PB12) |
|
|
|
|
return ((pio->PIO_PDSR & AT91C_PIO_PB13) |
|
|
|
|
? CMC_PU2 : 0); |
|
|
|
|
else |
|
|
|
|
return ((pio->PIO_PDSR & AT91C_PIO_PB13) |
|
|
|
|
? CMC_HP_BASIC : CMC_BASIC); |
|
|
|
|
} |
|
|
|
|