예제 #1
0
파일: bs_chip.c 프로젝트: chenhbzl/BooxApp
void init_gpio( void )
{
    int i = 0;
    set_gpio_dir( GPIO_CNF1, 1 );
    set_gpio_dir( GPIO_HRDY, 0 );
    set_gpio_dir( GPIO_HDC, 1 );
    set_gpio_dir( GPIO_RESET_L, 1 );
    set_gpio_dir( GPIO_HRD_L, 1 );
    set_gpio_dir( GPIO_HWE_L, 1 );
    set_gpio_dir( GPIO_HCS_L, 1 );
    set_gpio_dir( GPIO_HIRQ, 0 );
    for ( i = 0; i < 16; i++ ) set_gpio_dir( GPIO_HDB0 + i, 0 );
    hdb_dir = 0;

    assert( get_gpio_dir( GPIO_CNF1 ) == 1 );
    assert( get_gpio_dir( GPIO_HRDY ) == 0 );
    assert( get_gpio_dir( GPIO_HDC ) == 1 );
    assert( get_gpio_dir( GPIO_RESET_L ) == 1 );
    assert( get_gpio_dir( GPIO_HRD_L ) == 1 );
    assert( get_gpio_dir( GPIO_HWE_L ) == 1 );
    assert( get_gpio_dir( GPIO_HCS_L ) == 1 );
    assert( get_gpio_dir( GPIO_HIRQ ) == 0 );
    for ( i = 0; i < 16; i++ ) assert( get_gpio_dir( GPIO_HDB0 + i ) == 0 );

    set_gpio_val( GPIO_RESET_L, 0 );
    set_gpio_val( GPIO_CNF1, 0 );
    set_gpio_val( GPIO_HDC, 0 );
    set_gpio_val( GPIO_HRD_L, 1 );
    set_gpio_val( GPIO_HWE_L, 1 );
    set_gpio_val( GPIO_HCS_L, 1 );
    set_gpio_val( GPIO_RESET_L, 1 );
}
예제 #2
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;
}