diff options
Diffstat (limited to 'arch/arm/mach-s3c2442/mach-gta02.c')
-rw-r--r-- | arch/arm/mach-s3c2442/mach-gta02.c | 75 |
1 files changed, 43 insertions, 32 deletions
diff --git a/arch/arm/mach-s3c2442/mach-gta02.c b/arch/arm/mach-s3c2442/mach-gta02.c index 603f755f24e..ab731371b87 100644 --- a/arch/arm/mach-s3c2442/mach-gta02.c +++ b/arch/arm/mach-s3c2442/mach-gta02.c @@ -378,10 +378,9 @@ static struct s3c2410_uartcfg gta02_uartcfgs[] = { }; -/* BQ27000 Battery */ - struct pcf50633 *gta02_pcf; +#ifdef CONFIG_CHARGER_PCF50633 static int gta02_get_charger_online_status(void) { struct pcf50633 *pcf = gta02_pcf; @@ -396,24 +395,6 @@ static int gta02_get_charger_active_status(void) return pcf50633_mbc_get_status(pcf) & PCF50633_MBC_USB_ACTIVE; } - -struct bq27000_platform_data bq27000_pdata = { - .name = "battery", - .rsense_mohms = 20, - .hdq_read = hdq_read, - .hdq_write = hdq_write, - .hdq_initialized = hdq_initialized, - .get_charger_online_status = gta02_get_charger_online_status, - .get_charger_active_status = gta02_get_charger_active_status -}; - -struct platform_device bq27000_battery_device = { - .name = "bq27000-battery", - .dev = { - .platform_data = &bq27000_pdata, - }, -}; - #define ADC_NOM_CHG_DETECT_1A 6 #define ADC_NOM_CHG_DETECT_USB 43 @@ -467,6 +448,42 @@ static void gta02_pmu_event_callback(struct pcf50633 *pcf, int irq) } } +static void gta02_udc_vbus_draw(unsigned int ma) +{ + if (!gta02_pcf) + return; + + gta02_usb_vbus_draw = ma; + + schedule_delayed_work(>a02_charger_work, + GTA02_CHARGER_CONFIGURE_TIMEOUT); +} +#else /* !CONFIG_CHARGER_PCF50633 */ +#define gta02_get_charger_online_status NULL +#define gta02_get_charger_active_status NULL +#define gta02_pmu_event_callback NULL +#define gta02_udc_vbus_draw NULL +#endif + +/* BQ27000 Battery */ + +struct bq27000_platform_data bq27000_pdata = { + .name = "battery", + .rsense_mohms = 20, + .hdq_read = hdq_read, + .hdq_write = hdq_write, + .hdq_initialized = hdq_initialized, + .get_charger_online_status = gta02_get_charger_online_status, + .get_charger_active_status = gta02_get_charger_active_status +}; + +struct platform_device bq27000_battery_device = { + .name = "bq27000-battery", + .dev = { + .platform_data = &bq27000_pdata, + }, +}; + static struct platform_device gta01_pm_gps_dev = { .name = "neo1973-pm-gps", }; @@ -900,17 +917,6 @@ static void gta02_udc_command(enum s3c2410_udc_cmd_e cmd) /* get PMU to set USB current limit accordingly */ -static void gta02_udc_vbus_draw(unsigned int ma) -{ - if (!gta02_pcf) - return; - - gta02_usb_vbus_draw = ma; - - schedule_delayed_work(>a02_charger_work, - GTA02_CHARGER_CONFIGURE_TIMEOUT); -} - static struct s3c2410_udc_mach_info gta02_udc_cfg = { .vbus_draw = gta02_udc_vbus_draw, .udc_command = gta02_udc_command, @@ -1637,7 +1643,10 @@ static void __init gta02_machine_init(void) } spin_lock_init(&motion_irq_lock); + +#ifdef CONFIG_CHARGER_PCF50633 INIT_DELAYED_WORK(>a02_charger_work, gta02_charger_worker); +#endif /* Glamo chip select optimization */ /* *((u32 *)(S3C2410_MEMREG(((1 + 1) << 2)))) = 0x1280; */ @@ -1691,9 +1700,11 @@ static void __init gta02_machine_init(void) /* Register the HDQ and vibrator as children of pwm device */ gta02_vibrator_dev.dev.parent = &s3c24xx_pwm_device.dev; + platform_device_register(>a02_vibrator_dev); +#ifdef CONFIG_HDQ_GPIO_BITBANG gta02_hdq_device.dev.parent = &s3c24xx_pwm_device.dev; platform_device_register(>a02_hdq_device); - platform_device_register(>a02_vibrator_dev); +#endif } |