diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-h4.c | 11 | ||||
-rw-r--r-- | arch/x86/kernel/rtc.c | 22 |
3 files changed, 33 insertions, 4 deletions
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 2ced6d9984d2..adfcd7b51393 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -476,6 +476,10 @@ static struct i2c_board_info __initdata h3_i2c_board_info[] = { | |||
476 | I2C_BOARD_INFO("tps65013", 0x48), | 476 | I2C_BOARD_INFO("tps65013", 0x48), |
477 | /* .irq = OMAP_GPIO_IRQ(??), */ | 477 | /* .irq = OMAP_GPIO_IRQ(??), */ |
478 | }, | 478 | }, |
479 | { | ||
480 | I2C_BOARD_INFO("isp1301_omap", 0x2d), | ||
481 | .irq = OMAP_GPIO_IRQ(14), | ||
482 | }, | ||
479 | }; | 483 | }; |
480 | 484 | ||
481 | static struct omap_gpio_switch h3_gpio_switches[] __initdata = { | 485 | static struct omap_gpio_switch h3_gpio_switches[] __initdata = { |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index d4e3b6fc4705..2fef2c845083 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/mtd/partitions.h> | 18 | #include <linux/mtd/partitions.h> |
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/workqueue.h> | 20 | #include <linux/workqueue.h> |
21 | #include <linux/i2c.h> | ||
21 | #include <linux/input.h> | 22 | #include <linux/input.h> |
22 | #include <linux/err.h> | 23 | #include <linux/err.h> |
23 | #include <linux/clk.h> | 24 | #include <linux/clk.h> |
@@ -391,6 +392,13 @@ static struct omap_board_config_kernel h4_config[] = { | |||
391 | { OMAP_TAG_LCD, &h4_lcd_config }, | 392 | { OMAP_TAG_LCD, &h4_lcd_config }, |
392 | }; | 393 | }; |
393 | 394 | ||
395 | static struct i2c_board_info __initdata h4_i2c_board_info[] = { | ||
396 | { | ||
397 | I2C_BOARD_INFO("isp1301_omap", 0x2d), | ||
398 | .irq = OMAP_GPIO_IRQ(125), | ||
399 | }, | ||
400 | }; | ||
401 | |||
394 | static void __init omap_h4_init(void) | 402 | static void __init omap_h4_init(void) |
395 | { | 403 | { |
396 | /* | 404 | /* |
@@ -411,6 +419,9 @@ static void __init omap_h4_init(void) | |||
411 | } | 419 | } |
412 | #endif | 420 | #endif |
413 | 421 | ||
422 | i2c_register_board_info(1, h4_i2c_board_info, | ||
423 | ARRAY_SIZE(h4_i2c_board_info)); | ||
424 | |||
414 | platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices)); | 425 | platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices)); |
415 | omap_board_config = h4_config; | 426 | omap_board_config = h4_config; |
416 | omap_board_config_size = ARRAY_SIZE(h4_config); | 427 | omap_board_config_size = ARRAY_SIZE(h4_config); |
diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c index 05191bbc68b8..0a23b5795b25 100644 --- a/arch/x86/kernel/rtc.c +++ b/arch/x86/kernel/rtc.c | |||
@@ -223,11 +223,25 @@ static struct platform_device rtc_device = { | |||
223 | static __init int add_rtc_cmos(void) | 223 | static __init int add_rtc_cmos(void) |
224 | { | 224 | { |
225 | #ifdef CONFIG_PNP | 225 | #ifdef CONFIG_PNP |
226 | if (!pnp_platform_devices) | 226 | static const char *ids[] __initconst = |
227 | platform_device_register(&rtc_device); | 227 | { "PNP0b00", "PNP0b01", "PNP0b02", }; |
228 | #else | 228 | struct pnp_dev *dev; |
229 | struct pnp_id *id; | ||
230 | int i; | ||
231 | |||
232 | pnp_for_each_dev(dev) { | ||
233 | for (id = dev->id; id; id = id->next) { | ||
234 | for (i = 0; i < ARRAY_SIZE(ids); i++) { | ||
235 | if (compare_pnp_id(id, ids[i]) != 0) | ||
236 | return 0; | ||
237 | } | ||
238 | } | ||
239 | } | ||
240 | #endif | ||
241 | |||
229 | platform_device_register(&rtc_device); | 242 | platform_device_register(&rtc_device); |
230 | #endif /* CONFIG_PNP */ | 243 | dev_info(&rtc_device.dev, |
244 | "registered platform RTC device (no PNP device found)\n"); | ||
231 | return 0; | 245 | return 0; |
232 | } | 246 | } |
233 | device_initcall(add_rtc_cmos); | 247 | device_initcall(add_rtc_cmos); |