1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "gpio.h"
- //#include "hal.h"
- #include "bsp_hal.h"
- struct gpio_dev_t *gpio_p;
- //static void _gpio_lisr(int vector)
- //{
- // DEBUG(0, 1, "Enter\n");
- // if (vector != IRQ_GPIO_VECTOR)
- // hal_system_error(HAL_ERR_UNHANDLED_INTERRUPT);
- //
- // /* Disable GPIO interrupt */
- // uint32_t prv_msk = hal_intc_irq_mask(IRQ_GPIO_VECTOR);
- //
- // /* Get int state and then clear it */
- // unsigned int int_sr = IN32(GPIOC_INT_RAW_STATE);
- // gpio_p->int_data = int_sr;
- // OUT32(GPIOC_INT_CLEAR, int_sr);
- //
- // /* Clean GPIO pending */
- // hal_intc_irq_clean(IRQ_GPIO_VECTOR);
- //
- // /* Enable higher priority interrupt */
- // /* comment it to disable nested interrupt */
- // GIE_ENABLE();
- // hal_raise_bh(&gpio_p->hisr);
- //
- // GIE_DISABLE();
- // /* - Enable GPIO interrupt */
- // hal_intc_irq_unmask(prv_msk);
- //}
- int gpio_init(struct gpio_dev_t *gpio)
- {
- // int status = HAL_SUCCESS;
- // int core_intl;
- //
- // /* initialize global gpio pointer */
- // gpio_p = gpio;
- // core_intl = hal_global_int_ctl(HAL_DISABLE_INTERRUPTS);
- //
- // /* INTC */
- // // - Disable GPIO interrupt
- // hal_intc_irq_disable(IRQ_GPIO_VECTOR);
- // // - Clear GPIO interrupt status
- // hal_intc_irq_clean(IRQ_GPIO_VECTOR);
- // // - Setup #PENIRQ trigger mode - edge trigger
- // // - Setup #PENIRQ trigger level - active high
- // hal_intc_irq_config(IRQ_GPIO_VECTOR, IRQ_EDGE_TRIGGER, IRQ_ACTIVE_HIGH);
- //
- //
- // /* GPIO */
- // /* falling, interrupt when pressed */
- // //OUT32(GPIOC_INT_RISE_NEG, 0xFFFFFFFF);
- // /* rising, interrupt when released */
- // OUT32(GPIOC_INT_RISE_NEG, 0x0);
- // /* enable all gpio interrupt GPIO1-5*/
- // OUT32(GPIOC_INT_ENABLE, 0x3E);
- // /* set the max value to debounce */
- // OUT32(GPIOC_INT_BOUNCE_PRESCALE, 0xFFFF);
- // /* enable debounce */
- // OUT32(GPIOC_INT_BOUNCE_ENABLE, 0x3E);
- //
- // status = hal_register_isr(IRQ_GPIO_VECTOR, _gpio_lisr, (void*)0);
- //
- // if (status != HAL_SUCCESS){
- // DEBUG(1, 1, "Failed to register GPIO driver LISR!\n");
- // return status;
- // }
- //
- // status = hal_create_bh(&gpio->hisr);
- // if (status != HAL_SUCCESS){
- // DEBUG(1, 1, "Failed to create GPIO driver HISR!\n");
- // return status;
- // }
- //
- // // - Enable GPIO interrupt
- // hal_intc_irq_enable(IRQ_GPIO_VECTOR);
- //
- // /* Restore CPU interrupt controller to previous level */
- // hal_global_int_ctl(core_intl);
- // return status;
- return 0;
- }
|