1.1 --- a/stage2/board-minipc.c Tue Jul 11 18:45:08 2017 +0200
1.2 +++ b/stage2/board-minipc.c Wed Jul 12 15:46:53 2017 +0200
1.3 @@ -22,41 +22,52 @@
1.4
1.5 #include "board.h"
1.6 #include "minipc.h"
1.7 +#include "gpio.h"
1.8
1.9 /* Later initialisation functions. */
1.10
1.11 void gpio_init2()
1.12 {
1.13 + void *gpio_port_base;
1.14 +
1.15 /* LED enable. */
1.16
1.17 - __gpio_as_output(GPIO_LED_EN);
1.18 - __gpio_set_pin(GPIO_LED_EN);
1.19 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, GPIO_PORT_LED);
1.20 + jz4740_gpio_as_output(gpio_port_base, GPIO_LED_EN);
1.21 + jz4740_gpio_set_pin(gpio_port_base, GPIO_LED_EN);
1.22
1.23 __harb_usb0_uhc();
1.24 - __gpio_as_emc();
1.25 - __gpio_as_dma();
1.26 +
1.27 + /* gpio_as_emc */
1.28 +
1.29 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, GPIO_PORT_EMC);
1.30 +
1.31 + jz4740_gpio_ctrl_update(gpio_port_base, GPIO_GPALR, 0xC0000000, 0x40000000);
1.32 + jz4740_gpio_ctrl_update(gpio_port_base, GPIO_GPAUR, 0x0000FFFF, 0x00005555);
1.33 +
1.34 + /* gpio_as_dma */
1.35 +
1.36 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, GPIO_PORT_DMA);
1.37 +
1.38 + jz4740_gpio_ctrl_update(gpio_port_base, GPIO_GPALR, 0xFF000000, 0x55000000);
1.39 + jz4740_gpio_ctrl_update(gpio_port_base, GPIO_GPAUR, 0x00F00000, 0x00500000);
1.40
1.41 /* Initialise LCD pins. */
1.42
1.43 - __gpio_as_lcd_master();
1.44 + /* gpio_as_lcd_master */
1.45 +
1.46 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, GPIO_PORT_LCD);
1.47 +
1.48 + jz4740_gpio_ctrl_update(gpio_port_base, GPIO_GPALR, 0xFFFF0000, 0x55550000);
1.49 + jz4740_gpio_ctrl_set(gpio_port_base, GPIO_GPAUR, 0x556A5555);
1.50
1.51 /* Initialise MSC pins. */
1.52
1.53 - __gpio_as_msc();
1.54 -
1.55 - /* Initialise other pins. */
1.56 -
1.57 - unsigned short i;
1.58 + /* gpio_as_msc */
1.59
1.60 - for (i = 0; i < GPIO_KEYIN_COUNT; i++) {
1.61 - __gpio_as_input(GPIO_KEYIN_BASE + i);
1.62 - __gpio_enable_pull(GPIO_KEYIN_BASE + i);
1.63 - }
1.64 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, GPIO_PORT_MSC);
1.65
1.66 - for (i = 0; i < GPIO_KEYOUT_COUNT; i++) {
1.67 - __gpio_as_output(GPIO_KEYOUT_BASE + i);
1.68 - __gpio_clear_pin(GPIO_KEYOUT_BASE + i);
1.69 - }
1.70 + jz4740_gpio_ctrl_update(gpio_port_base, GPIO_GPALR, 0x0000FFF0, 0x00005550);
1.71 }
1.72
1.73 void rtc_init()
1.74 @@ -107,13 +118,15 @@
1.75
1.76 void gpio_init_irq()
1.77 {
1.78 - __gpio_as_irq_low_level(GPIO_POWER);
1.79 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, GPIO_PORT_POWER);
1.80 + jz4740_gpio_as_irq(gpio_port_base, GPIO_POWER, gpio_irq_low_level);
1.81 __intc_unmask_irq(GPIO_IRQ);
1.82 }
1.83
1.84 int gpio_have_irq(uint8_t gpio)
1.85 {
1.86 - return (REG_GPIO_GPFR(gpio / 32) & (1 << (gpio % 32)));
1.87 + gpio_port_base = jz4740_get_port((void *) GPIO_BASE, gpio / 32);
1.88 + return jz4740_gpio_have_irq(gpio_port_base, gpio % 32);
1.89 }
1.90
1.91 /* Board startup detection. */