Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.1-rc3 118 lines 2.9 kB view raw
1/* 2 * Atheros PB44 reference board support 3 * 4 * Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 as published 8 * by the Free Software Foundation. 9 */ 10 11#include <linux/init.h> 12#include <linux/platform_device.h> 13#include <linux/i2c.h> 14#include <linux/i2c-gpio.h> 15#include <linux/i2c/pcf857x.h> 16 17#include "machtypes.h" 18#include "dev-gpio-buttons.h" 19#include "dev-leds-gpio.h" 20#include "dev-spi.h" 21 22#define PB44_GPIO_I2C_SCL 0 23#define PB44_GPIO_I2C_SDA 1 24 25#define PB44_GPIO_EXP_BASE 16 26#define PB44_GPIO_SW_RESET (PB44_GPIO_EXP_BASE + 6) 27#define PB44_GPIO_SW_JUMP (PB44_GPIO_EXP_BASE + 8) 28#define PB44_GPIO_LED_JUMP1 (PB44_GPIO_EXP_BASE + 9) 29#define PB44_GPIO_LED_JUMP2 (PB44_GPIO_EXP_BASE + 10) 30 31#define PB44_KEYS_POLL_INTERVAL 20 /* msecs */ 32#define PB44_KEYS_DEBOUNCE_INTERVAL (3 * PB44_KEYS_POLL_INTERVAL) 33 34static struct i2c_gpio_platform_data pb44_i2c_gpio_data = { 35 .sda_pin = PB44_GPIO_I2C_SDA, 36 .scl_pin = PB44_GPIO_I2C_SCL, 37}; 38 39static struct platform_device pb44_i2c_gpio_device = { 40 .name = "i2c-gpio", 41 .id = 0, 42 .dev = { 43 .platform_data = &pb44_i2c_gpio_data, 44 } 45}; 46 47static struct pcf857x_platform_data pb44_pcf857x_data = { 48 .gpio_base = PB44_GPIO_EXP_BASE, 49}; 50 51static struct i2c_board_info pb44_i2c_board_info[] __initdata = { 52 { 53 I2C_BOARD_INFO("pcf8575", 0x20), 54 .platform_data = &pb44_pcf857x_data, 55 }, 56}; 57 58static struct gpio_led pb44_leds_gpio[] __initdata = { 59 { 60 .name = "pb44:amber:jump1", 61 .gpio = PB44_GPIO_LED_JUMP1, 62 .active_low = 1, 63 }, { 64 .name = "pb44:green:jump2", 65 .gpio = PB44_GPIO_LED_JUMP2, 66 .active_low = 1, 67 }, 68}; 69 70static struct gpio_keys_button pb44_gpio_keys[] __initdata = { 71 { 72 .desc = "soft_reset", 73 .type = EV_KEY, 74 .code = KEY_RESTART, 75 .debounce_interval = PB44_KEYS_DEBOUNCE_INTERVAL, 76 .gpio = PB44_GPIO_SW_RESET, 77 .active_low = 1, 78 } , { 79 .desc = "jumpstart", 80 .type = EV_KEY, 81 .code = KEY_WPS_BUTTON, 82 .debounce_interval = PB44_KEYS_DEBOUNCE_INTERVAL, 83 .gpio = PB44_GPIO_SW_JUMP, 84 .active_low = 1, 85 } 86}; 87 88static struct spi_board_info pb44_spi_info[] = { 89 { 90 .bus_num = 0, 91 .chip_select = 0, 92 .max_speed_hz = 25000000, 93 .modalias = "m25p64", 94 }, 95}; 96 97static struct ath79_spi_platform_data pb44_spi_data = { 98 .bus_num = 0, 99 .num_chipselect = 1, 100}; 101 102static void __init pb44_init(void) 103{ 104 i2c_register_board_info(0, pb44_i2c_board_info, 105 ARRAY_SIZE(pb44_i2c_board_info)); 106 platform_device_register(&pb44_i2c_gpio_device); 107 108 ath79_register_leds_gpio(-1, ARRAY_SIZE(pb44_leds_gpio), 109 pb44_leds_gpio); 110 ath79_register_gpio_keys_polled(-1, PB44_KEYS_POLL_INTERVAL, 111 ARRAY_SIZE(pb44_gpio_keys), 112 pb44_gpio_keys); 113 ath79_register_spi(&pb44_spi_data, pb44_spi_info, 114 ARRAY_SIZE(pb44_spi_info)); 115} 116 117MIPS_MACHINE(ATH79_MACH_PB44, "PB44", "Atheros PB44 reference board", 118 pb44_init);