diff options
author | David Brownell <david-b@pacbell.net> | 2008-06-18 05:31:43 -0400 |
---|---|---|
committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-06-27 09:32:29 -0400 |
commit | 9c2baf785e90419d6f9af6bd07aa0694020cba8d (patch) | |
tree | 8cc1a3721b31d7b09fd260c6bd86e960b2d91ee5 /arch/avr32/mach-at32ap | |
parent | 7ef31e9c4e711bfb817a15b54e428e5c4a7c0032 (diff) |
at32ap700x spi: enable pullups on MISO
This is a minor tweak to the at32ap700x pin configuration for the SPI
input pin (MISO), enabling the on-chip weak pullup (typical 190K) to
(a) ensure a fixed data value for missing or input-only slaves;
(b) prevent power waste associated with inputs floating near VDDIO/2.
Atmel's boards have no external pullup or pulldown on these pins, so
it's unlikely other boards would address these issues with external
pulldowns. Were there trouble, board-specific code could turn off
the relevant pullup(s).
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Diffstat (limited to 'arch/avr32/mach-at32ap')
-rw-r--r-- | arch/avr32/mach-at32ap/at32ap700x.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c index a9ae7bb108b2..a2e7b96b5e8c 100644 --- a/arch/avr32/mach-at32ap/at32ap700x.c +++ b/arch/avr32/mach-at32ap/at32ap700x.c | |||
@@ -1181,7 +1181,8 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n) | |||
1181 | switch (id) { | 1181 | switch (id) { |
1182 | case 0: | 1182 | case 0: |
1183 | pdev = &atmel_spi0_device; | 1183 | pdev = &atmel_spi0_device; |
1184 | select_peripheral(PA(0), PERIPH_A, 0); /* MISO */ | 1184 | /* pullup MISO so a level is always defined */ |
1185 | select_peripheral(PA(0), PERIPH_A, AT32_GPIOF_PULLUP); | ||
1185 | select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */ | 1186 | select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */ |
1186 | select_peripheral(PA(2), PERIPH_A, 0); /* SCK */ | 1187 | select_peripheral(PA(2), PERIPH_A, 0); /* SCK */ |
1187 | at32_spi_setup_slaves(0, b, n, spi0_pins); | 1188 | at32_spi_setup_slaves(0, b, n, spi0_pins); |
@@ -1189,7 +1190,8 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n) | |||
1189 | 1190 | ||
1190 | case 1: | 1191 | case 1: |
1191 | pdev = &atmel_spi1_device; | 1192 | pdev = &atmel_spi1_device; |
1192 | select_peripheral(PB(0), PERIPH_B, 0); /* MISO */ | 1193 | /* pullup MISO so a level is always defined */ |
1194 | select_peripheral(PB(0), PERIPH_B, AT32_GPIOF_PULLUP); | ||
1193 | select_peripheral(PB(1), PERIPH_B, 0); /* MOSI */ | 1195 | select_peripheral(PB(1), PERIPH_B, 0); /* MOSI */ |
1194 | select_peripheral(PB(5), PERIPH_B, 0); /* SCK */ | 1196 | select_peripheral(PB(5), PERIPH_B, 0); /* SCK */ |
1195 | at32_spi_setup_slaves(1, b, n, spi1_pins); | 1197 | at32_spi_setup_slaves(1, b, n, spi1_pins); |