int is_ac_connected2(void) { int val; SET_CBUS_REG_MASK(PAD_PULL_UP_REG0, (1<<20)); //enable internal pullup set_gpio_mode(GPIOA_bank_bit0_27(20), GPIOA_bit_bit0_27(20), GPIO_INPUT_MODE); val = get_gpio_val(GPIOA_bank_bit0_27(20), GPIOA_bit_bit0_27(20)); printf( "2nd is_ac_connected=%x\n", val); return val; }
/* * DC_DET(GPIOA_20) enable internal pullup * High: Disconnect * Low: Connect */ static inline int is_ac_online(void) { int val; SET_CBUS_REG_MASK(PAD_PULL_UP_REG0, (1<<20)); //enable internal pullup set_gpio_mode(GPIOA_bank_bit0_27(20), GPIOA_bit_bit0_27(20), GPIO_INPUT_MODE); val = get_gpio_val(GPIOA_bank_bit0_27(20), GPIOA_bit_bit0_27(20)); printf("%s: get from gpio is %d.\n", __FUNCTION__, val); return !val; }
inline int get_key(void) { //return (((readl(P_RTC_ADDR1) >> 2) & 1) ? 0 : 1); #ifdef CONFIG_SWITCH_BOOT_MODE int val; SET_CBUS_REG_MASK(PAD_PULL_UP_REG2, (1<<14)); //enable internal pullup set_gpio_mode(GPIOC_bank_bit0_15(14), GPIOC_bit_bit0_15(14), GPIO_INPUT_MODE); val = get_gpio_val(GPIOC_bank_bit0_15(14), GPIOC_bit_bit0_15(14)); // printf("%s: get from gpio is %d.\n", __FUNCTION__, val); return !val; #else return (((readl(P_RTC_ADDR1) >> 2) & 1) ? 0 : 1); #endif }
static void save_gpio(int port) { gpio_data[port].mode = get_gpio_mode(gpio_data[port].bank, gpio_data[port].bit); if (gpio_data[port].mode==GPIO_OUTPUT_MODE) { if (gpio_data[port].enable){ printk("change %s output %d to input\n", gpio_data[port].name, gpio_data[port].value); gpio_data[port].value = get_gpio_val(gpio_data[port].bank, gpio_data[port].bit); set_gpio_mode(gpio_data[port].bank, gpio_data[port].bit, GPIO_INPUT_MODE); } else{ printk("no change %s output %d\n", gpio_data[port].name, gpio_data[port].value); } } }
static inline int _gpio_bank_read(cmd_t *op) { char bank = op->bank; if (0 > _gpio_setup_bank_bit(op)) { return -1; } spin_lock(&gpio_lock); set_gpio_mode(op->bank, op->bit, GPIO_INPUT_MODE); op->val = get_gpio_val(op->bank, op->bit); spin_unlock(&gpio_lock); printk("Read: GPIO_%c_bit_%d = %d \n", bank, op->bit, op->val); return op->val ; }
static int get_dev_power_state(char* info_buf) { int dev_num = sizeof(devices_power)/sizeof(device_power_t); int power_state = 0; int i; sprintf(&info_buf[strlen(info_buf)], "devices power state are:\n\n"); for (i = 0; i < dev_num; i++) { power_state = get_gpio_val(devices_power[i].gpio_bank, devices_power[i].gpio_bit); if(devices_power[i].inverse_flag) power_state = !power_state; sprintf(&info_buf[strlen(info_buf)], "%s state is %s \n", devices_power[i].name, power_state?"on":"off"); } sprintf(&info_buf[strlen(info_buf)], "\n"); return 0; }
static inline int key_scan(int *key_state_list) { int ret = 0; // GPIOAO_3 #ifdef CONFIG_SUSPEND if(suspend_state) { // forse power key down suspend_state--; key_state_list[0] = 1; } else #endif key_state_list[0] = get_gpio_val(GPIOAO_bank_bit0_11(3), GPIOAO_bit_bit0_11(3))?0:1; // key_state_list[0] = ((READ_AOBUS_REG(AO_RTC_ADDR1) >> 2) & 1) ? 0 : 1; return ret; }
/** * \brief GPIO read/write skeleton with wakeup/sleep capability. */ static sint8 gpio_ioctl(uint8 op, uint8 u8GpioNum, uint8 u8InVal, uint8 * pu8OutVal) { sint8 ret, gpio; ret = hif_chip_wake(); if(ret != M2M_SUCCESS) goto _EXIT; gpio = get_gpio_idx(u8GpioNum); if(gpio < 0) goto _EXIT1; if(op == GPIO_OP_DIR) { ret = set_gpio_dir((uint8)gpio, u8InVal); } else if(op == GPIO_OP_SET) { ret = set_gpio_val((uint8)gpio, u8InVal); } else if(op == GPIO_OP_GET) { ret = get_gpio_val((uint8)gpio, pu8OutVal); } if(ret != M2M_SUCCESS) goto _EXIT1; _EXIT1: ret = hif_chip_sleep(); _EXIT: return ret; }
static void scan_keys(struct kp *kp) { struct input_dev *input = kp->input; keyl = get_gpio_val(GPIOA_bank_bit0_27(3), GPIOA_bit_bit0_27(3)); keyr = get_gpio_val(GPIOA_bank_bit0_27(5), GPIOA_bit_bit0_27(5)); keya = get_gpio_val(GPIOA_bank_bit0_27(7), GPIOA_bit_bit0_27(7)); keyb = get_gpio_val(GPIOA_bank_bit0_27(8), GPIOA_bit_bit0_27(8)); keyx = get_gpio_val(GPIOA_bank_bit0_27(9), GPIOA_bit_bit0_27(9)); keyy = get_gpio_val(GPIOA_bank_bit0_27(10), GPIOA_bit_bit0_27(10)); if(keyl == keyl_old){ if (key_param[0]) { if(keyl) { key_report(kp, key_param[12], key_param[13], 6); input_report_key(input, BUTTON_L, 1); kp->flagl = 0; } else { input_report_key(input, BUTTON_L, 0); kp->flagl = 1; } } else if (keyl == kp->flagl) { if(keyl) { input_report_key(input, BUTTON_L, 1); input_mt_sync(input); kp->flagl = 0; printk("KEY L\n"); } else { input_report_key(input, BUTTON_L, 0); input_mt_sync(input); kp->flagl = 1; printk("KEY L release\n"); } } } if(keyr == keyr_old){ if (key_param[0]) { if(keyr) { key_report(kp, key_param[14], key_param[15], 7); kp->flagr = 0; } else { kp->flagr = 1; } } else if (keyr == kp->flagr) { if(keyr) { input_report_key(input, BUTTON_R, 1); input_mt_sync(input); kp->flagr = 0; printk("KEY R\n"); } else { input_report_key(input, BUTTON_R, 0); input_mt_sync(input); kp->flagr = 1; printk("KEY R release\n"); } } } if(keya == keya_old){ if (key_param[0]) { if(keya) { key_report(kp, key_param[4], key_param[5], 2); kp->flaga = 0; } else { kp->flaga = 1; } } else if (keya == kp->flaga) { if(keya) { input_report_key(input, BUTTON_A, 1); input_mt_sync(input); kp->flaga = 0; printk("KEY A\n"); } else { input_report_key(input, BUTTON_A, 0); input_mt_sync(input); kp->flaga = 1; printk("KEY A release\n"); } } } if(keyb == keyb_old){ if (key_param[0]) { if(keyb) { key_report(kp, key_param[6], key_param[7], 3); kp->flagb = 0; } else { kp->flagb = 1; } } else if (keyb == kp->flagb) { if(keyb) { input_report_key(input, BUTTON_B, 1); input_mt_sync(input); kp->flagb = 0; printk("KEY B\n"); } else { input_report_key(input, BUTTON_B, 0); input_mt_sync(input); printk("KEY B release\n"); kp->flagb = 1; } } } if(keyx == keyx_old){ if (key_param[0]) { if(keyx) { key_report(kp, key_param[8], key_param[9], 4); kp->flagx = 0; } else { kp->flagx = 1; } } else if (keyx == kp->flagx) { if(keyx) { input_report_key(input, BUTTON_X, 1); input_mt_sync(input); kp->flagx = 0; printk("KEY X\n"); } else { input_report_key(input, BUTTON_X, 0); input_mt_sync(input); kp->flagx = 1; printk("KEY X release\n"); } } } if(keyy == keyy_old){ if (key_param[0]) { if(keyy) { key_report(kp, key_param[10], key_param[11], 5); kp->flagy = 0; } else { kp->flagy = 1; } } else if (keyy == kp->flagy) { if(keyy) { input_report_key(input, BUTTON_Y, 1); input_mt_sync(input); kp->flagy = 0; printk("KEY Y\n"); } else { input_report_key(input, BUTTON_Y, 0); input_mt_sync(input); kp->flagy = 1; printk("KEY Y release\n"); } } } keyl_old = keyl; keyr_old = keyr; keya_old = keya; keyb_old = keyb; keyx_old = keyx; keyy_old = keyy; }
int gpio_hirq( void ) { return get_gpio_val( GPIO_HIRQ ); }
int gpio_hrdy( void ) { return get_gpio_val( GPIO_HRDY ); }