diff options
Diffstat (limited to 'arch/mips/jz4740/board-qi_lb60.c')
| -rw-r--r-- | arch/mips/jz4740/board-qi_lb60.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c index 2c0e107966ad..c3b04be3fb2b 100644 --- a/arch/mips/jz4740/board-qi_lb60.c +++ b/arch/mips/jz4740/board-qi_lb60.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/spi/spi_gpio.h> | 23 | #include <linux/spi/spi_gpio.h> |
| 24 | #include <linux/power_supply.h> | 24 | #include <linux/power_supply.h> |
| 25 | #include <linux/power/jz4740-battery.h> | 25 | #include <linux/power/jz4740-battery.h> |
| 26 | #include <linux/power/gpio-charger.h> | ||
| 26 | 27 | ||
| 27 | #include <asm/mach-jz4740/jz4740_fb.h> | 28 | #include <asm/mach-jz4740/jz4740_fb.h> |
| 28 | #include <asm/mach-jz4740/jz4740_mmc.h> | 29 | #include <asm/mach-jz4740/jz4740_mmc.h> |
| @@ -49,14 +50,14 @@ static bool is_avt2; | |||
| 49 | 50 | ||
| 50 | /* NAND */ | 51 | /* NAND */ |
| 51 | static struct nand_ecclayout qi_lb60_ecclayout_1gb = { | 52 | static struct nand_ecclayout qi_lb60_ecclayout_1gb = { |
| 52 | /* .eccbytes = 36, | 53 | .eccbytes = 36, |
| 53 | .eccpos = { | 54 | .eccpos = { |
| 54 | 6, 7, 8, 9, 10, 11, 12, 13, | 55 | 6, 7, 8, 9, 10, 11, 12, 13, |
| 55 | 14, 15, 16, 17, 18, 19, 20, 21, | 56 | 14, 15, 16, 17, 18, 19, 20, 21, |
| 56 | 22, 23, 24, 25, 26, 27, 28, 29, | 57 | 22, 23, 24, 25, 26, 27, 28, 29, |
| 57 | 30, 31, 32, 33, 34, 35, 36, 37, | 58 | 30, 31, 32, 33, 34, 35, 36, 37, |
| 58 | 38, 39, 40, 41 | 59 | 38, 39, 40, 41 |
| 59 | },*/ | 60 | }, |
| 60 | .oobfree = { | 61 | .oobfree = { |
| 61 | { .offset = 2, .length = 4 }, | 62 | { .offset = 2, .length = 4 }, |
| 62 | { .offset = 42, .length = 22 } | 63 | { .offset = 42, .length = 22 } |
| @@ -64,7 +65,7 @@ static struct nand_ecclayout qi_lb60_ecclayout_1gb = { | |||
| 64 | }; | 65 | }; |
| 65 | 66 | ||
| 66 | /* Early prototypes of the QI LB60 had only 1GB of NAND. | 67 | /* Early prototypes of the QI LB60 had only 1GB of NAND. |
| 67 | * In order to support these devices aswell the partition and ecc layout is | 68 | * In order to support these devices as well the partition and ecc layout is |
| 68 | * initialized depending on the NAND size */ | 69 | * initialized depending on the NAND size */ |
| 69 | static struct mtd_partition qi_lb60_partitions_1gb[] = { | 70 | static struct mtd_partition qi_lb60_partitions_1gb[] = { |
| 70 | { | 71 | { |
| @@ -85,7 +86,7 @@ static struct mtd_partition qi_lb60_partitions_1gb[] = { | |||
| 85 | }; | 86 | }; |
| 86 | 87 | ||
| 87 | static struct nand_ecclayout qi_lb60_ecclayout_2gb = { | 88 | static struct nand_ecclayout qi_lb60_ecclayout_2gb = { |
| 88 | /* .eccbytes = 72, | 89 | .eccbytes = 72, |
| 89 | .eccpos = { | 90 | .eccpos = { |
| 90 | 12, 13, 14, 15, 16, 17, 18, 19, | 91 | 12, 13, 14, 15, 16, 17, 18, 19, |
| 91 | 20, 21, 22, 23, 24, 25, 26, 27, | 92 | 20, 21, 22, 23, 24, 25, 26, 27, |
| @@ -96,7 +97,7 @@ static struct nand_ecclayout qi_lb60_ecclayout_2gb = { | |||
| 96 | 60, 61, 62, 63, 64, 65, 66, 67, | 97 | 60, 61, 62, 63, 64, 65, 66, 67, |
| 97 | 68, 69, 70, 71, 72, 73, 74, 75, | 98 | 68, 69, 70, 71, 72, 73, 74, 75, |
| 98 | 76, 77, 78, 79, 80, 81, 82, 83 | 99 | 76, 77, 78, 79, 80, 81, 82, 83 |
| 99 | },*/ | 100 | }, |
| 100 | .oobfree = { | 101 | .oobfree = { |
| 101 | { .offset = 2, .length = 10 }, | 102 | { .offset = 2, .length = 10 }, |
| 102 | { .offset = 84, .length = 44 }, | 103 | { .offset = 84, .length = 44 }, |
| @@ -396,6 +397,28 @@ static struct platform_device qi_lb60_pwm_beeper = { | |||
| 396 | }, | 397 | }, |
| 397 | }; | 398 | }; |
| 398 | 399 | ||
| 400 | /* charger */ | ||
| 401 | static char *qi_lb60_batteries[] = { | ||
| 402 | "battery", | ||
| 403 | }; | ||
| 404 | |||
| 405 | static struct gpio_charger_platform_data qi_lb60_charger_pdata = { | ||
| 406 | .name = "usb", | ||
| 407 | .type = POWER_SUPPLY_TYPE_USB, | ||
| 408 | .gpio = JZ_GPIO_PORTD(28), | ||
| 409 | .gpio_active_low = 1, | ||
| 410 | .supplied_to = qi_lb60_batteries, | ||
| 411 | .num_supplicants = ARRAY_SIZE(qi_lb60_batteries), | ||
| 412 | }; | ||
| 413 | |||
| 414 | static struct platform_device qi_lb60_charger_device = { | ||
| 415 | .name = "gpio-charger", | ||
| 416 | .dev = { | ||
| 417 | .platform_data = &qi_lb60_charger_pdata, | ||
| 418 | }, | ||
| 419 | }; | ||
| 420 | |||
| 421 | |||
| 399 | static struct platform_device *jz_platform_devices[] __initdata = { | 422 | static struct platform_device *jz_platform_devices[] __initdata = { |
| 400 | &jz4740_udc_device, | 423 | &jz4740_udc_device, |
| 401 | &jz4740_mmc_device, | 424 | &jz4740_mmc_device, |
| @@ -410,12 +433,13 @@ static struct platform_device *jz_platform_devices[] __initdata = { | |||
| 410 | &jz4740_adc_device, | 433 | &jz4740_adc_device, |
| 411 | &qi_lb60_gpio_keys, | 434 | &qi_lb60_gpio_keys, |
| 412 | &qi_lb60_pwm_beeper, | 435 | &qi_lb60_pwm_beeper, |
| 436 | &qi_lb60_charger_device, | ||
| 413 | }; | 437 | }; |
| 414 | 438 | ||
| 415 | static void __init board_gpio_setup(void) | 439 | static void __init board_gpio_setup(void) |
| 416 | { | 440 | { |
| 417 | /* We only need to enable/disable pullup here for pins used in generic | 441 | /* We only need to enable/disable pullup here for pins used in generic |
| 418 | * drivers. Everything else is done by the drivers themselfs. */ | 442 | * drivers. Everything else is done by the drivers themselves. */ |
| 419 | jz_gpio_disable_pullup(QI_LB60_GPIO_SD_VCC_EN_N); | 443 | jz_gpio_disable_pullup(QI_LB60_GPIO_SD_VCC_EN_N); |
| 420 | jz_gpio_disable_pullup(QI_LB60_GPIO_SD_CD); | 444 | jz_gpio_disable_pullup(QI_LB60_GPIO_SD_CD); |
| 421 | } | 445 | } |
