Changeset 17167


Ignore:
Timestamp:
06/01/11 19:14:57 (2 years ago)
Author:
BrainSlayer
Message:

fix power enable

Location:
src/linux/laguna/linux-2.6.39/arch/arm/mach-cns3xxx
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/linux/laguna/linux-2.6.39/arch/arm/mach-cns3xxx/include/mach/cns3xxx.h

    r17146 r17167  
    147147#define TIMER1_2_INTERRUPT_MASK_OFFSET          0x38 
    148148 
     149 
    149150#define TIMER_FREERUN_OFFSET                    0x40 
    150151#define TIMER_FREERUN_CONTROL_OFFSET            0x44 
  • src/linux/laguna/linux-2.6.39/arch/arm/mach-cns3xxx/include/mach/gpio.h

    r17146 r17167  
    4747#define CNS3XXX_GPIO_SET            0x10 
    4848#define CNS3XXX_GPIO_CLEAR          0x14 
     49 
     50 
     51static inline void gpio_line_config(u8 line, u32 direction) 
     52{ 
     53        u32 reg; 
     54        if (direction) { 
     55                if (line < 32) { 
     56                        reg = __raw_readl(CNS3XXX_GPIOA_BASE_VIRT + CNS3XXX_GPIO_DIR); 
     57                        reg |= (1 << line); 
     58                        __raw_writel(reg, CNS3XXX_GPIOA_BASE_VIRT + CNS3XXX_GPIO_DIR); 
     59                } else { 
     60                        reg = __raw_readl(CNS3XXX_GPIOB_BASE_VIRT + CNS3XXX_GPIO_DIR); 
     61                        reg |= (1 << (line - 32)); 
     62                        __raw_writel(reg, CNS3XXX_GPIOB_BASE_VIRT + CNS3XXX_GPIO_DIR);           
     63                } 
     64        } else { 
     65                if (line < 32) { 
     66                        reg = __raw_readl(CNS3XXX_GPIOA_BASE_VIRT + CNS3XXX_GPIO_DIR); 
     67                        reg &= ~(1 << line); 
     68                        __raw_writel(reg, CNS3XXX_GPIOA_BASE_VIRT + CNS3XXX_GPIO_DIR); 
     69                } else { 
     70                        reg = __raw_readl(CNS3XXX_GPIOB_BASE_VIRT + CNS3XXX_GPIO_DIR); 
     71                        reg &= ~(1 << (line - 32)); 
     72                        __raw_writel(reg, CNS3XXX_GPIOB_BASE_VIRT + CNS3XXX_GPIO_DIR);           
     73                } 
     74        } 
     75} 
     76 
    4977 
    5078static inline void gpio_line_get(u8 line, int *value) 
  • src/linux/laguna/linux-2.6.39/arch/arm/mach-cns3xxx/laguna.c

    r17146 r17167  
    4949#endif 
    5050#include <mach/pm.h> 
     51#include <mach/gpio.h> 
    5152#include "core.h" 
    5253#include "devices.h" 
     
    631632                cns3xxx_pcie_init(pcie_bitmap); 
    632633 
     634                gpio_line_set(3, 1); 
     635                gpio_line_config(3, CNS3XXX_GPIO_OUT); 
     636                gpio_set_value(3, 1); 
     637 
    633638                if (strncmp(laguna_info.model, "GW2380", 6) == 0) 
    634639                { 
     
    657662                }else{ 
    658663                if (laguna_info.config_bitmap & (USB0_LOAD)) { 
     664 
     665                        printk(KERN_EMERG "power up USB0\n"); 
    659666                        cns3xxx_pwr_power_up(1 << PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB); 
    660667 
     
    675682 
    676683                if (laguna_info.config_bitmap & (USB1_LOAD)) { 
     684                        printk(KERN_EMERG "power up ehci/ohci\n"); 
    677685                        platform_device_register(&cns3xxx_usb_ehci_device); 
    678686                        platform_device_register(&cns3xxx_usb_ohci_device); 
     
    836844                else if (strncmp(laguna_info.model, "GW2380", 6) == 0) { 
    837845                        laguna_gpio_leds[0].gpio = 107; 
    838                         laguna_gpio_leds_data.num_leds = 1; 
     846                        laguna_gpio_leds[1].gpio = 106; 
     847                        laguna_gpio_leds_data.num_leds = 2; 
    839848                        platform_device_register(&laguna_gpio_leds_device); 
    840849                } 
Note: See TracChangeset for help on using the changeset viewer.