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 ); }
/** * \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; }