Exemplo n.º 1
0
int test_bsp_gpio_set_value_invalid_value(void)
{
    bsp_gpio_set_value(GPIO_TEST_NUM, 10);
    bsp_gpio_set_value(GPIO_TEST_NUM, -1);

    return GPIO_OK;
}
void bsp_gpio_direction_output(u32 gpio, u32 value)
{
	unsigned int gpio_base_addr = 0;
	unsigned int gpio_number = 0;
	unsigned int reg_value_old = 0;
	unsigned int reg_value_new = 0;

    if(value > 1 || gpio > GPIO_TOTAL)
    {
        gpio_print_error("para is error, gpio = %d, value = %d.\n", gpio, value);
        return ;
    }

	gpio_base_addr = get_gpio_base_addr(gpio);
	gpio_number = get_gpio_number(gpio);

	reg_value_old  = readl(gpio_base_addr + GPIODIR);

	reg_value_new  = (((unsigned int)0x1 << gpio_number)) | (reg_value_old);

	writel(reg_value_new, gpio_base_addr + GPIODIR);

    bsp_gpio_set_value( gpio, value);

}
Exemplo n.º 3
0
int test_gpio_llt(void)
{
    bsp_gpio_direction_input(GPIO_TEST_NUM);
    bsp_gpio_get_value(GPIO_TEST_NUM);
    bsp_gpio_direction_get(GPIO_TEST_NUM);

    bsp_gpio_direction_output(GPIO_TEST_NUM, 0);
    bsp_gpio_set_value(GPIO_TEST_NUM, 1);
    bsp_gpio_direction_get(GPIO_TEST_NUM);

    return GPIO_OK;
}
Exemplo n.º 4
0
int test_bsp_gpio_set_value(void)
{
	bsp_gpio_set_value(GPIO_TEST_NUM,0);

	if(1 == gpio_reg_get_bits(GPIO_TEST_BASEADDR,HI_GPIO_SWPORT_DR_OFFSET,GPIO_PIN_BITS))
	{
		logMsg("Test_bsp_gpio_set_value is fail!!\n",0,0,0,0,0,0);
		return GPIO_ERROR;
	}
	
	bsp_gpio_set_value(GPIO_TEST_NUM,1);
	if(0 == gpio_reg_get_bits(GPIO_TEST_BASEADDR,HI_GPIO_SWPORT_DR_OFFSET,GPIO_PIN_BITS))
	{
		logMsg("Test_bsp_gpio_set_value is fail!!\n",0,0,0,0,0,0);
		return GPIO_ERROR;
	}

	logMsg("Test_bsp_gpio_set_value is passed!!\n",0,0,0,0,0,0);
	
    return GPIO_OK;

}
/*****************************************************************************
* 函 数 名  : bsp_gpio_direction_output
*
* 功能描述  : 设置GPIO引脚的方向为输出,并设置该引脚默认电平值
*
* 输入参数  : UINT32 gpio       GPIO引脚编号
*             UINT32 value      待设置电平值,即0为低电平,1为高电平
*
* 返 回 值  : 无
*
* 修改记录  : 2012年11月27日
*****************************************************************************/
void bsp_gpio_direction_output(u32 gpio, u32 value)
{
    u32 chip_num;
    u32 pin;
    u32 u32GpioAddr = 0;
    u32 gpio_value = 0;
    unsigned long irq_flags;

    /* 如果GPIO 没有初始化,返回错误 */
    if (GPIO_DEF_NOT_RUNNING == g_u32GpioRunning)
    {
        gpio_print_error(" GPIO is not inited.\n");
        return ;
    }

    if(gpio >= GPIO_TOTAL_PINS_NUM)
    {
         gpio_print_error(" GPIO parameter error.\n");
        return ;
    }

    chip_num   = gpio / GPIO_MAX_PINS;
    pin        = gpio % GPIO_MAX_PINS;

	if(chip_num < GPIO_MAX_BANK_NUM){
	    u32GpioAddr = s_u32GpioBaseAddr[chip_num];
	}
	else{
        gpio_print_error(" GPIO bank number error.\n");
        return ;
	}

    spin_lock_irqsave(&g_gpio_spinlock, irq_flags);
    (void)bsp_ipc_spin_lock(IPC_SEM_GPIO);

    gpio_value = readl(u32GpioAddr + HI_GPIO_SWPORT_DDR_OFFSET);
    writel(gpio_value | ((u32)0x1 << pin), u32GpioAddr + HI_GPIO_SWPORT_DDR_OFFSET);

    (void)bsp_ipc_spin_unlock(IPC_SEM_GPIO);
    spin_unlock_irqrestore(&g_gpio_spinlock, irq_flags);

    bsp_gpio_set_value(gpio, value);

}
Exemplo n.º 6
0
int test_bsp_gpio_input_set_value(void)
{
    bsp_gpio_set_value(GPIO_TEST_NUM, 0);

    return GPIO_OK;
}
Exemplo n.º 7
0
int test_bsp_gpio_set_value_invalid_num(void)
{
    bsp_gpio_set_value(GPIO_INVALID_NUM,1);
    return GPIO_OK;
}