diff options
Diffstat (limited to 'arch/arm/mach-pxa/tosa.c')
| -rw-r--r-- | arch/arm/mach-pxa/tosa.c | 37 | 
1 files changed, 31 insertions, 6 deletions
| diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index 130e37e4ebdd..a6c4694359ca 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
| @@ -706,16 +706,39 @@ static struct tmio_nand_data tosa_tc6393xb_nand_config = { | |||
| 706 | .badblock_pattern = &tosa_tc6393xb_nand_bbt, | 706 | .badblock_pattern = &tosa_tc6393xb_nand_bbt, | 
| 707 | }; | 707 | }; | 
| 708 | 708 | ||
| 709 | static struct tc6393xb_platform_data tosa_tc6393xb_setup = { | 709 | static int tosa_tc6393xb_setup(struct platform_device *dev) | 
| 710 | { | ||
| 711 | int rc; | ||
| 712 | |||
| 713 | rc = gpio_request(TOSA_GPIO_CARD_VCC_ON, "CARD_VCC_ON"); | ||
| 714 | if (rc) | ||
| 715 | goto err_req; | ||
| 716 | |||
| 717 | rc = gpio_direction_output(TOSA_GPIO_CARD_VCC_ON, 1); | ||
| 718 | if (rc) | ||
| 719 | goto err_dir; | ||
| 720 | |||
| 721 | return rc; | ||
| 722 | |||
| 723 | err_dir: | ||
| 724 | gpio_free(TOSA_GPIO_CARD_VCC_ON); | ||
| 725 | err_req: | ||
| 726 | return rc; | ||
| 727 | } | ||
| 728 | |||
| 729 | static void tosa_tc6393xb_teardown(struct platform_device *dev) | ||
| 730 | { | ||
| 731 | gpio_free(TOSA_GPIO_CARD_VCC_ON); | ||
| 732 | } | ||
| 733 | |||
| 734 | static struct tc6393xb_platform_data tosa_tc6393xb_data = { | ||
| 710 | .scr_pll2cr = 0x0cc1, | 735 | .scr_pll2cr = 0x0cc1, | 
| 711 | .scr_gper = 0x3300, | 736 | .scr_gper = 0x3300, | 
| 712 | .scr_gpo_dsr = | ||
| 713 | TOSA_TC6393XB_GPIO_BIT(TOSA_GPIO_CARD_VCC_ON), | ||
| 714 | .scr_gpo_doecr = | ||
| 715 | TOSA_TC6393XB_GPIO_BIT(TOSA_GPIO_CARD_VCC_ON), | ||
| 716 | 737 | ||
| 717 | .irq_base = IRQ_BOARD_START, | 738 | .irq_base = IRQ_BOARD_START, | 
| 718 | .gpio_base = TOSA_TC6393XB_GPIO_BASE, | 739 | .gpio_base = TOSA_TC6393XB_GPIO_BASE, | 
| 740 | .setup = tosa_tc6393xb_setup, | ||
| 741 | .teardown = tosa_tc6393xb_teardown, | ||
| 719 | 742 | ||
| 720 | .enable = tosa_tc6393xb_enable, | 743 | .enable = tosa_tc6393xb_enable, | 
| 721 | .disable = tosa_tc6393xb_disable, | 744 | .disable = tosa_tc6393xb_disable, | 
| @@ -723,6 +746,8 @@ static struct tc6393xb_platform_data tosa_tc6393xb_setup = { | |||
| 723 | .resume = tosa_tc6393xb_resume, | 746 | .resume = tosa_tc6393xb_resume, | 
| 724 | 747 | ||
| 725 | .nand_data = &tosa_tc6393xb_nand_config, | 748 | .nand_data = &tosa_tc6393xb_nand_config, | 
| 749 | |||
| 750 | .resume_restore = 1, | ||
| 726 | }; | 751 | }; | 
| 727 | 752 | ||
| 728 | 753 | ||
| @@ -730,7 +755,7 @@ static struct platform_device tc6393xb_device = { | |||
| 730 | .name = "tc6393xb", | 755 | .name = "tc6393xb", | 
| 731 | .id = -1, | 756 | .id = -1, | 
| 732 | .dev = { | 757 | .dev = { | 
| 733 | .platform_data = &tosa_tc6393xb_setup, | 758 | .platform_data = &tosa_tc6393xb_data, | 
| 734 | }, | 759 | }, | 
| 735 | .num_resources = ARRAY_SIZE(tc6393xb_resources), | 760 | .num_resources = ARRAY_SIZE(tc6393xb_resources), | 
| 736 | .resource = tc6393xb_resources, | 761 | .resource = tc6393xb_resources, | 
