From 355e7abcf073ce4ca320719171131b60e3280aa6 Mon Sep 17 00:00:00 2001 From: lw Date: Wed, 7 Mar 2012 17:08:38 +0800 Subject: [PATCH] rk30:add irda code support for sdk --- arch/arm/mach-rk29/include/mach/board.h | 6 --- arch/arm/mach-rk30/board-rk30-sdk.c | 54 ++++++++++++++++++++++++- arch/arm/plat-rk/include/plat/board.h | 7 ++++ 3 files changed, 59 insertions(+), 8 deletions(-) diff --git a/arch/arm/mach-rk29/include/mach/board.h b/arch/arm/mach-rk29/include/mach/board.h index 152278941ad6..6c64114dee7d 100755 --- a/arch/arm/mach-rk29/include/mach/board.h +++ b/arch/arm/mach-rk29/include/mach/board.h @@ -62,12 +62,6 @@ struct rk29_adc_battery_platform_data { int charge_set_level; }; -struct irda_info{ - u32 intr_pin; - int (*iomux_init)(void); - int (*iomux_deinit)(void); - int (*irda_pwr_ctl)(int en); -}; struct rk29_button_light_info{ u32 led_on_pin; diff --git a/arch/arm/mach-rk30/board-rk30-sdk.c b/arch/arm/mach-rk30/board-rk30-sdk.c index 9207d29ffc76..53feb9812e5b 100755 --- a/arch/arm/mach-rk30/board-rk30-sdk.c +++ b/arch/arm/mach-rk30/board-rk30-sdk.c @@ -479,7 +479,7 @@ static struct platform_device device_fb = { }; #endif -#if CONFIG_ANDROID_TIMED_GPIO +#ifdef CONFIG_ANDROID_TIMED_GPIO static struct timed_gpio timed_gpios[] = { { .name = "vibrator", @@ -508,7 +508,7 @@ struct platform_device rk29_device_vibrator ={ #ifdef CONFIG_LEDS_GPIO_PLATFORM struct gpio_led rk29_leds[] = { { - .name = "rk30_keyboard_led", + .name = "button-backlight", .gpio = RK30_PIN4_PD7, .default_trigger = "timer", .active_low = 0, @@ -531,6 +531,53 @@ struct platform_device rk29_device_gpio_leds = { }; #endif +#ifdef CONFIG_RK_IRDA +#define IRDA_IRQ_PIN RK30_PIN6_PA1 + +int irda_iomux_init(void) +{ + int ret = 0; + + //irda irq pin + ret = gpio_request(IRDA_IRQ_PIN, NULL); + if(ret != 0) + { + gpio_free(IRDA_IRQ_PIN); + printk(">>>>>> IRDA_IRQ_PIN gpio_request err \n "); + } + gpio_pull_updown(IRDA_IRQ_PIN, PullDisable); + gpio_direction_input(IRDA_IRQ_PIN); + + return 0; +} + +int irda_iomux_deinit(void) +{ + gpio_free(IRDA_IRQ_PIN); + return 0; +} + +static struct irda_info rk29_irda_info = { + .intr_pin = IRDA_IRQ_PIN, + .iomux_init = irda_iomux_init, + .iomux_deinit = irda_iomux_deinit, + //.irda_pwr_ctl = bu92747guw_power_ctl, +}; + +static struct platform_device irda_device = { +#ifdef CONFIG_RK_IRDA_NET + .name = "rk_irda", +#else + .name = "bu92747_irda", +#endif + .id = -1, + .dev = { + .platform_data = &rk29_irda_info, + } +}; +#endif + + static struct platform_device *devices[] __initdata = { @@ -546,6 +593,9 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_LEDS_GPIO_PLATFORM &rk29_device_gpio_leds, #endif +#ifdef CONFIG_RK_IRDA + &irda_device, +#endif }; diff --git a/arch/arm/plat-rk/include/plat/board.h b/arch/arm/plat-rk/include/plat/board.h index a75fc54886ea..190134d35651 100755 --- a/arch/arm/plat-rk/include/plat/board.h +++ b/arch/arm/plat-rk/include/plat/board.h @@ -112,6 +112,13 @@ struct cm3217_platform_data { void (*exit_platform_hw)(void); }; +struct irda_info{ + u32 intr_pin; + int (*iomux_init)(void); + int (*iomux_deinit)(void); + int (*irda_pwr_ctl)(int en); +}; + #define BOOT_MODE_NORMAL 0 -- 2.34.1