示例#1
0
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;
}
示例#2
0
/*
 *	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;
}
示例#8
0
/**
 * \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;
}
示例#9
0
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;
}
示例#10
0
int  gpio_hirq( void )
{
    return get_gpio_val( GPIO_HIRQ );
}
示例#11
0
int  gpio_hrdy( void )
{
    return get_gpio_val( GPIO_HRDY );
}