diff options
-rw-r--r-- | arch/mips/ath79/Kconfig | 11 | ||||
-rw-r--r-- | arch/mips/ath79/Makefile | 5 | ||||
-rw-r--r-- | arch/mips/ath79/mach-pb44.c | 56 | ||||
-rw-r--r-- | arch/mips/ath79/machtypes.h | 1 |
4 files changed, 73 insertions, 0 deletions
diff --git a/arch/mips/ath79/Kconfig b/arch/mips/ath79/Kconfig index 50b933446cc0..fabb2b0412d7 100644 --- a/arch/mips/ath79/Kconfig +++ b/arch/mips/ath79/Kconfig | |||
@@ -1,5 +1,16 @@ | |||
1 | if ATH79 | 1 | if ATH79 |
2 | 2 | ||
3 | menu "Atheros AR71XX/AR724X/AR913X machine selection" | ||
4 | |||
5 | config ATH79_MACH_PB44 | ||
6 | bool "Atheros PB44 reference board" | ||
7 | select SOC_AR71XX | ||
8 | help | ||
9 | Say 'Y' here if you want your kernel to support the | ||
10 | Atheros PB44 reference board. | ||
11 | |||
12 | endmenu | ||
13 | |||
3 | config SOC_AR71XX | 14 | config SOC_AR71XX |
4 | def_bool n | 15 | def_bool n |
5 | 16 | ||
diff --git a/arch/mips/ath79/Makefile b/arch/mips/ath79/Makefile index e621d6c464c1..c3093f7d401f 100644 --- a/arch/mips/ath79/Makefile +++ b/arch/mips/ath79/Makefile | |||
@@ -16,3 +16,8 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | |||
16 | # Devices | 16 | # Devices |
17 | # | 17 | # |
18 | obj-y += dev-common.o | 18 | obj-y += dev-common.o |
19 | |||
20 | # | ||
21 | # Machines | ||
22 | # | ||
23 | obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o | ||
diff --git a/arch/mips/ath79/mach-pb44.c b/arch/mips/ath79/mach-pb44.c new file mode 100644 index 000000000000..ffc24d7a2552 --- /dev/null +++ b/arch/mips/ath79/mach-pb44.c | |||
@@ -0,0 +1,56 @@ | |||
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 | |||
19 | #define PB44_GPIO_I2C_SCL 0 | ||
20 | #define PB44_GPIO_I2C_SDA 1 | ||
21 | |||
22 | #define PB44_GPIO_EXP_BASE 16 | ||
23 | |||
24 | static struct i2c_gpio_platform_data pb44_i2c_gpio_data = { | ||
25 | .sda_pin = PB44_GPIO_I2C_SDA, | ||
26 | .scl_pin = PB44_GPIO_I2C_SCL, | ||
27 | }; | ||
28 | |||
29 | static struct platform_device pb44_i2c_gpio_device = { | ||
30 | .name = "i2c-gpio", | ||
31 | .id = 0, | ||
32 | .dev = { | ||
33 | .platform_data = &pb44_i2c_gpio_data, | ||
34 | } | ||
35 | }; | ||
36 | |||
37 | static struct pcf857x_platform_data pb44_pcf857x_data = { | ||
38 | .gpio_base = PB44_GPIO_EXP_BASE, | ||
39 | }; | ||
40 | |||
41 | static struct i2c_board_info pb44_i2c_board_info[] __initdata = { | ||
42 | { | ||
43 | I2C_BOARD_INFO("pcf8575", 0x20), | ||
44 | .platform_data = &pb44_pcf857x_data, | ||
45 | }, | ||
46 | }; | ||
47 | |||
48 | static void __init pb44_init(void) | ||
49 | { | ||
50 | i2c_register_board_info(0, pb44_i2c_board_info, | ||
51 | ARRAY_SIZE(pb44_i2c_board_info)); | ||
52 | platform_device_register(&pb44_i2c_gpio_device); | ||
53 | } | ||
54 | |||
55 | MIPS_MACHINE(ATH79_MACH_PB44, "PB44", "Atheros PB44 reference board", | ||
56 | pb44_init); | ||
diff --git a/arch/mips/ath79/machtypes.h b/arch/mips/ath79/machtypes.h index fac0e26a2433..a796fa3f92a3 100644 --- a/arch/mips/ath79/machtypes.h +++ b/arch/mips/ath79/machtypes.h | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | enum ath79_mach_type { | 17 | enum ath79_mach_type { |
18 | ATH79_MACH_GENERIC = 0, | 18 | ATH79_MACH_GENERIC = 0, |
19 | ATH79_MACH_PB44, /* Atheros PB44 reference board */ | ||
19 | }; | 20 | }; |
20 | 21 | ||
21 | #endif /* _ATH79_MACHTYPE_H */ | 22 | #endif /* _ATH79_MACHTYPE_H */ |