예제 #1
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);
	struct gpio_sw_platdata *pd = gpio->pdata;
	int ret ;

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

	ret =   gpio_set_one_pin_io_status(gpio->cdev.pio_hdle, mul_sel, pd->name);
	if ( !ret )
	gpio_sw_cdev->mul_sel=mul_sel;
	GPIO_SW_DEBUG("left gpio_sw_cfg_set \n");
	return ret;
}
예제 #2
0
/* Set gpio pin output mode and value */
static int sunxi_gpio_direction_out(struct gpio_chip *chip,
					unsigned gpio, int val)
{
	int ret;
	struct sunxi_gpio_chip *sgpio = to_sunxi_gpio(chip);
	ret =  gpio_set_one_pin_io_status(sgpio->data[gpio].gpio_handler,
					  SUNXI_GPIO_OUTPUT,
					  sgpio->data[gpio].pin_name);
	if (!ret) {
		sgpio->data[gpio].info.mul_sel = SUNXI_GPIO_OUTPUT;
		ret = gpio_write_one_pin_value(sgpio->data[gpio].gpio_handler,
					       val, sgpio->data[gpio].pin_name);
	}

	return ret;
}
예제 #3
0
/*
*******************************************************************************
*                     pin_init
*
* Description:
*    void
*
* Parameters:
*    void
*
* Return value:
*    void
*
* note:
*    void
*
*******************************************************************************
*/
static u32 alloc_pin(user_gpio_set_t *gpio_list)
{
    u32 pin_handle = 0;

	pin_handle = gpio_request(gpio_list, 1);
	if(pin_handle == 0){
		DMSG_PANIC("ERR: gpio_request failed\n");
		return 0;
	}

	/* set config, ouput */
	gpio_set_one_pin_io_status(pin_handle, 1, NULL);

	/* reserved is pull down */
	gpio_set_one_pin_pull(pin_handle, 2, NULL);

	return pin_handle;
}
예제 #4
0
/* Set gpio pin input mode */
static int sunxi_gpio_direction_in(struct gpio_chip *chip, unsigned gpio)
{
	int ret = 0;
	struct sunxi_gpio_chip *sgpio = to_sunxi_gpio(chip);

	/* EINT mode == INPUT mode, so if we  */
	/* are in EINT mode - just skip setup */
	/* To switch to input mode you should */
	/* disable irq first */
	if (sgpio->data[gpio].info.mul_sel != sgpio->data[gpio].eint_mux) {
		ret = gpio_set_one_pin_io_status(sgpio->data[gpio].gpio_handler,
						 SUNXI_GPIO_INPUT,
						 sgpio->data[gpio].pin_name);
		if (!ret)
			sgpio->data[gpio].info.mul_sel = SUNXI_GPIO_INPUT;
	}

	return ret;
}