Ignore:
Timestamp:
2010-03-05T03:56:25+01:00 (7 years ago)
Author:
lars
Message:

[xburst] jz4740 pm: Fix gpio suspend/resume. Turn pll off while in suspend and gate
clocks off which arn't handeld by their subsystems yet.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/xburst/files-2.6.32/arch/mips/jz4740/gpio.c

    r19098 r19984  
    107107        } else { 
    108108                jz_gpio_write_bit(gpio, JZ_REG_GPIO_FUNC_SET); 
     109                jz_gpio_write_bit(gpio, JZ_REG_GPIO_TRIGGER_CLEAR); 
    109110                switch (function) { 
    110111                case JZ_GPIO_FUNC1: 
     
    165166        for (i = 0; i < num; ++i, ++request) { 
    166167                jz_gpio_set_function(request->gpio, JZ_GPIO_FUNC_NONE); 
    167                 jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_DIRECTION_SET); 
     168                jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_DIRECTION_CLEAR); 
     169                jz_gpio_write_bit(request->gpio, JZ_REG_GPIO_PULL_SET); 
    168170        } 
    169171} 
     
    432434}; 
    433435 
    434 static int jz_gpio_suspend(struct sys_device *dev, pm_message_t state) 
     436int jz_gpio_suspend(void) 
    435437{ 
    436438        struct jz_gpio_chip *chip = jz_gpio_chips; 
    437439        int i, gpio; 
     440 
    438441        for (i = 0; i < ARRAY_SIZE(jz_gpio_chips); ++i, ++chip) { 
    439442                gpio = chip->gpio_chip.base; 
     
    442445        } 
    443446 
    444         return 0; 
    445 } 
    446  
    447 static int jz_gpio_resume(struct sys_device *dev) 
     447        chip = jz_gpio_chips; 
     448#if 0 
     449        for (i = 0; i < ARRAY_SIZE(jz_gpio_chips); ++i, ++chip) { 
     450                printk("GPIO %d: \n", i); 
     451                printk("\tPin: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_PIN))); 
     452                printk("\tData: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_DATA))); 
     453                printk("\tPull: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_PULL))); 
     454                printk("\tFunc: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_FUNC))); 
     455                printk("\tSelect: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_SELECT))); 
     456                printk("\tDirection: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_DIRECTION))); 
     457                printk("\tTrigger: %.8x\n", readl(CHIP_TO_REG(&chip->gpio_chip, JZ_REG_GPIO_TRIGGER))); 
     458        } 
     459#endif 
     460 
     461        return 0; 
     462} 
     463 
     464int jz_gpio_resume(void) 
    448465{ 
    449466        struct jz_gpio_chip *chip = jz_gpio_chips; 
     
    455472        return 0; 
    456473} 
    457  
    458 static struct sysdev_class jz_gpio_sysdev = { 
    459         .name = "JZ4740 GPIO", 
    460         .suspend = jz_gpio_suspend, 
    461         .resume = jz_gpio_resume, 
    462 }; 
    463474 
    464475int __init jz_gpiolib_init(void) 
     
    481492        } 
    482493 
    483         sysdev_class_register(&jz_gpio_sysdev); 
    484  
    485494        printk("JZ GPIO initalized\n"); 
    486495 
    487496        return 0; 
    488497} 
    489  
    490  
Note: See TracChangeset for help on using the changeset viewer.