int ctp_key_light(int status,int ms)
{
    u32 gpio_status;
    dprintk(DEBUG_INIT,"***CTP*** %s:status:%d,ms = %d\n",__func__,status,ms);

    gpio_status = sw_gpio_getcfg(config_info.key_light_gpio_number);
    if(gpio_status != 1) {
        sw_gpio_setcfg(config_info.key_light_gpio_number,1);
    }
    if(status == 0) {
        if(ms == 0) {
            __gpio_set_value(config_info.key_light_gpio_number, 0);
        } else {
            __gpio_set_value(config_info.key_light_gpio_number, 0);
            msleep(ms);
            __gpio_set_value(config_info.key_light_gpio_number, 1);
        }
    }
    if(status == 1) {
        if(ms == 0) {
            __gpio_set_value(config_info.key_light_gpio_number, 1);
        } else {
            __gpio_set_value(config_info.key_light_gpio_number, 1);
            msleep(ms);
            __gpio_set_value(config_info.key_light_gpio_number, 0);
        }
    }
    msleep(10);
    if(gpio_status != 1) {
        sw_gpio_setcfg(config_info.key_light_gpio_number,gpio_status);
    }
    return 0;
}
int mt5931_power_off(void) 
{ 
    printk(KERN_INFO "[mt5931_power_off] ++\n"); 
    if(_mt5931_powered_on == 1) { 
		_mt5931_powered_on = 0; 
#if 0
        mt_wifi_disable_irq();     
        printk(KERN_INFO "[mt5931_power_off] config EINT_PIN\n");         
        mt_set_gpio_mode(GPIO_WIFI_EINT_PIN, GPIO_WIFI_EINT_PIN_M_GPIO); /* GPIO mode */ 
		if(0 != sw_gpio_eint_set_enable(gpio_eint, 0))
		printk("set enable status failed\n");
		sw_gpio_setcfg(gpio_eint,0);//GPIO input
#endif

 
    printk(KERN_INFO "[mt5931_power_off] config GPIO_MT5931_RST/MT5931_PMU_EN - LOW\n"); 
	gpio_direction_output(GPIO_MT5931_RST, 0);
	gpio_direction_output(GPIO_MT5931_PMU_EN, 0);
	msleep(MT5931_RST_TIME);	
    }else{
    	printk("mt5931 unmatched power off\n");
    }
	
	
	gpio_free(GPIO_MT5931_PMU_EN);
	gpio_free(GPIO_MT5931_RST);

    printk(KERN_INFO "[mt5931_power_off] --\n"); 
    return 0; 
}
Esempio n. 3
0
void gtp_set_io_int(void)
{
        int gpio_status = -1;
        
        gpio_status = sw_gpio_getcfg(CTP_IRQ_NUMBER);
        if(gpio_status != 6){
                sw_gpio_setcfg(CTP_IRQ_NUMBER, 6);
        }
}
Esempio n. 4
0
void gtp_set_int_value(int status)
{
        int gpio_status = -1;
        
        gpio_status = sw_gpio_getcfg(CTP_IRQ_NUMBER);
        if(gpio_status != 1){
                sw_gpio_setcfg(CTP_IRQ_NUMBER, 1);
        }
        __gpio_set_value(CTP_IRQ_NUMBER, status);
        
}
/*
*******************************************************************************
*                     pin_init
*
* Description:
*    void
*
* Parameters:
*    void
*
* Return value:
*    void
*
* note:
*    void
*
*******************************************************************************
*/
static int alloc_pin(struct sw_hci_hcd *sw_ehci)
{
    u32 ret = 1;

    if(sw_ehci->drv_vbus_gpio_valid){
        ret = gpio_request(sw_ehci->drv_vbus_gpio_set.gpio.gpio, NULL);
        if(ret != 0){
            DMSG_PANIC("ERR: gpio_request failed\n");
            sw_ehci->drv_vbus_gpio_valid = 0;
        }else{
            /* set config, ouput */
            sw_gpio_setcfg(sw_ehci->drv_vbus_gpio_set.gpio.gpio, 1);

            /* reserved is pull down */
            sw_gpio_setpull(sw_ehci->drv_vbus_gpio_set.gpio.gpio, 2);
        }
    }

    if(sw_ehci->usb_restrict_valid){
        ret = gpio_request(sw_ehci->restrict_gpio_set.gpio.gpio, NULL);
        if(ret != 0){
            DMSG_PANIC("ERR: gpio_request failed\n");
            sw_ehci->usb_restrict_valid = 0;
        }else{
            /* set config, ouput */
            sw_gpio_setcfg(sw_ehci->restrict_gpio_set.gpio.gpio, 1);

            /* reserved is pull down */
            sw_gpio_setpull(sw_ehci->restrict_gpio_set.gpio.gpio, 2);
        }
    }
    if(sw_ehci->usb_restrict_valid){
        if(sw_ehci->usb_restrict_flag){
             __gpio_set_value(sw_ehci->restrict_gpio_set.gpio.gpio, 0);
        }else{
             __gpio_set_value(sw_ehci->restrict_gpio_set.gpio.gpio, 1);
        }
    }

    return 0;
}
static int mt5931_power_on(void) 
{ 

	int ret = 0;
    if(_mt5931_powered_on == 0) 
	{ 
        _mt5931_powered_on = 1;         
        printk(KERN_INFO "[mt5931_power_on] config EINT_PIN\n"); 
            
		ret = gpio_request(GPIO_MT5931_PMU_EN, "MT5931_PMU_EN");
		if (ret) 
		{          
			printk("failed to request MT5931_PMU_EN %d!\n", GPIO_MT5931_PMU_EN);          
			return -1;	      
		}         //set the gpio to output mode, low val  
		
            
		ret = gpio_request(GPIO_MT5931_RST, "MT5931_RST");  
		if (ret) 
		{          
			printk("failed to request MT5931_RST %d!\n", GPIO_MT5931_RST);          
			return -1;	      
		} 
              

	#if 0
		mt_wifi_disable_irq(); 
		mt_set_gpio_mode(GPIO_WIFI_EINT_PIN, GPIO_WIFI_EINT_PIN_M_EINT); /* EINT5 */ 
		mt_set_gpio_pull_enable(GPIO_WIFI_PMU_EN_PIN, GPIO_PULL_DISABLE);
		if(0 != sw_gpio_eint_set_enable(gpio_eint, 0))
			printk("set enable status failed\n");
				sw_gpio_setcfg(gpio_eint,6);//EINT6
		sw_gpio_setpull(gpio_dis,0);//pull disabled
	#endif

	
		
		gpio_direction_output(GPIO_MT5931_RST, 0);
		gpio_direction_output(GPIO_MT5931_PMU_EN, 0);
		msleep(MT5931_OFF_TIME);
		gpio_direction_output(GPIO_MT5931_PMU_EN, 1);
		msleep(MT5931_PMU_EN_TIME);
		gpio_direction_output(GPIO_MT5931_RST, 1);
		msleep(MT5931_RST_TIME);


    }else{
    	printk("mt5931 unmatched power on\n");
    } 
	return 0; 
}
Esempio n. 7
0
static int	gpio_sw_cfg_set(struct gpio_sw_classdev *gpio_sw_cdev,int  mul_sel)
{
    struct gpio_sw *gpio = to_gpio(gpio_sw_cdev);
    int ret ;

    GPIO_SW_DEBUG("attending gpio_sw_cfg_set \n");
    GPIO_SW_DEBUG("pio_hdle is %u \n",gpio->cdev.pio_hdle);

    ret = sw_gpio_setcfg(gpio->cdev.pio_hdle, mul_sel);
    if ( !ret )
        gpio_sw_cdev->mul_sel=mul_sel;
    GPIO_SW_DEBUG("left gpio_sw_cfg_set \n");
    return ret;
}
static int  sun6i_ar100_probe(struct platform_device *pdev)
{
	int binary_len;
	script_item_u script_val;
	script_item_value_type_e type;
	
	AR100_INF("ar100 initialize\n");
	
	/* 
	 * request ar100 resources:
	 * p2wi/uart gpio...
	 */
	sw_gpio_setcfg(GPIOL(0), 3);	/* p2wi sck */
	sw_gpio_setcfg(GPIOL(1), 3);	/* p2wi sda */
	
	type = script_get_item("cpus_config_paras", "cpus_uart_debug_used", &script_val);
	if (SCIRPT_ITEM_VALUE_TYPE_INT != type) {
		AR100_WRN("ar100 uart debug config type err!");
		script_val.val = 1;
	}
	if (script_val.val) {
		sw_gpio_setcfg(GPIOL(2), 2);	/* uart tx */
		sw_gpio_setcfg(GPIOL(3), 2);	/* uart rx */
	}
	AR100_INF("ar100 uart debug config [%s] [%s] : %d\n", "cpus_config_paras", "cpus_uart_debug_used", script_val.val);
	
	AR100_INF("sram_a2 vaddr(%x)\n", (unsigned int)ar100_sram_a2_vbase);
	
	/* clear sram_a2 area */
	memset((void *)ar100_sram_a2_vbase, 0, AW_SRAM_A2_SIZE);
	
	/* load ar100 system binary data to sram_a2 */
	binary_len = 0x13000;
	memcpy((void *)ar100_sram_a2_vbase, (void *)(&ar100_binary_start), binary_len);
	printk("move ar100 binary data [addr = %x, len = %x] to sram_a2 finished\n",
	         (unsigned int)(&ar100_binary_start), (unsigned int)binary_len);
	
	/* initialize hwspinlock */
	AR100_INF("hwspinlock initialize\n");
	ar100_hwspinlock_init();
	
	/* initialize hwmsgbox */
	AR100_INF("hwmsgbox initialize\n");
	ar100_hwmsgbox_init();
	
	/* initialize message manager */
	AR100_INF("message manager initialize\n");
	ar100_message_manager_init();
	
	/* set ar100 cpu reset to de-assert state */
	AR100_INF("set ar100 reset to de-assert state\n");
	{
		volatile unsigned long value;
		value = readl((IO_ADDRESS(AW_R_CPUCFG_BASE) + 0x0));
		value |= 1;
		writel(value, (IO_ADDRESS(AW_R_CPUCFG_BASE) + 0x0));
	}
	
	/* wait ar100 ready */
	AR100_INF("wait ar100 ready....\n");
	if (ar100_wait_ready(10000)) {
		AR100_LOG("ar100 startup failed\n");
	}
	
	/* enable ar100 asyn tx interrupt */
	ar100_hwmsgbox_enable_receiver_int(AR100_HWMSGBOX_AR100_ASYN_TX_CH, AW_HWMSG_QUEUE_USER_AC327);
	
	/* enable ar100 syn tx interrupt */
	ar100_hwmsgbox_enable_receiver_int(AR100_HWMSGBOX_AR100_SYN_TX_CH, AW_HWMSG_QUEUE_USER_AC327);
	
	/* config dvfs v-f table */
	if (ar100_dvfs_cfg_vf_table()) {
		AR100_WRN("config dvfs v-f table failed\n");
	}
	
	/* config dram config paras */
	if (ar100_config_dram_paras()) {
		AR100_WRN("config dram paras failed\n");
	}

	/* config ir config paras */
	if (ar100_config_ir_paras()) {
		AR100_WRN("config ir paras failed\n");
	}

	/* config pmu config paras */
	if (ar100_config_pmu_paras()) {
		AR100_WRN("config pmu paras failed\n");
	}

#ifdef CONFIG_PM
	atomic_set(&ar100_suspend_flag, 0);
#endif
	
	/* ar100 initialize succeeded */
	AR100_INF("ar100 startup succeeded, driver version : %d\n", AR100_VERSIONS);
	
	return 0;
}