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; }
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); } }
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; }
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; }