summaryrefslogtreecommitdiff
path: root/bsp/nuvoton/nk-980iot/board/nu_pin_init.c
blob: b3a69f1f9b37e4adbf3fd076ef2388a177393309 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/**************************************************************************//**
*
* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date            Author       Notes
* 2020-12-12      Wayne        First version
*
******************************************************************************/

#include "board.h"

static void nu_pin_uart_init(void)
{
    /* UART0: GPF11, GPF12 */
    outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & 0xfff00fff) | 0x11000);

#if !defined(BOARD_USING_LCD_ILI9341)
    /* UART1: GPF9, GPF10 */
    outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & 0xfffff00f) | 0x00220);
#endif
}

static void nu_pin_emac_init(void)
{
    /* EMAC0  */
    outpw(REG_SYS_GPE_MFPL, 0x11111111);
    outpw(REG_SYS_GPE_MFPH, (inpw(REG_SYS_GPE_MFPH) & ~0xFF) | 0x11);

    /* EMAC1  */
//    outpw(REG_SYS_GPF_MFPL, 0x11111111);
//    outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & ~0xFF) | 0x11);
}

static void nu_pin_sdh_init(void)
{
    /* SDH1: PF[0, 6]  */
    outpw(REG_SYS_GPF_MFPL, (inpw(REG_SYS_GPF_MFPL) & ~0x0FFFFFFF) | 0x02222222);
}

static void nu_pin_qspi_init(void)
{
    /* QSPI0: PD[2, 7]  */
    outpw(REG_SYS_GPD_MFPL, (inpw(REG_SYS_GPD_MFPL) & ~0xFFFFFF00) | 0x11111100);
}

static void nu_pin_spi_init(void)
{
    /* SPI0: PD[8, 11]  */
    outpw(REG_SYS_GPD_MFPH, (inpw(REG_SYS_GPD_MFPH) & ~0x0000FFFF) | 0x00001111);
}

static void nu_pin_i2c_init(void)
{
    /* I2C0: PA[0, 1]  */
    outpw(REG_SYS_GPA_MFPL, (inpw(REG_SYS_GPA_MFPL) & ~0x000000FF) | 0x00000033);

#if !defined(BSP_USING_ADC_TOUCH)
    /* I2C2: PB5, PB7  */
    outpw(REG_SYS_GPB_MFPL, (inpw(REG_SYS_GPB_MFPL) & ~0xF0F00000) | 0x20200000);
#endif
}


static void nu_pin_pwm_init(void)
{
    /* PWM02, PWM03: PF[7, 8]  */
    outpw(REG_SYS_GPF_MFPL, (inpw(REG_SYS_GPF_MFPL) & ~0xF0000000) | 0x40000000);
    outpw(REG_SYS_GPF_MFPH, (inpw(REG_SYS_GPF_MFPH) & ~0x0000000F) | 0x00000004);
}

static void nu_pin_i2s_init(void)
{
    /* I2S A[2, 6] */
    outpw(REG_SYS_GPA_MFPL, (inpw(REG_SYS_GPA_MFPL) & ~0x0FFFFF00) | 0x02222200);
}

static void nu_pin_can_init(void)
{

}

static void nu_pin_adc_init(void)
{
#if defined(BSP_USING_ADC_TOUCH)
    GPIO_SetMode(PB, BIT4 | BIT5 | BIT6 | BIT7, GPIO_MODE_INPUT);
    GPIO_DISABLE_DIGITAL_PATH(PB, BIT4 | BIT5 | BIT6 | BIT7);
#endif
}

#if defined(BSP_USING_USBD)
static void nu_pin_usbd_init(void)
{
    /* USB0_VBUSVLD, PE.11  */
    outpw(REG_SYS_GPE_MFPH, (inpw(REG_SYS_GPE_MFPH) & ~0x0000F000) | 0x00001000);
}
#endif

static void nu_pin_usbh_init(void)
{
}

void nu_pin_init(void)
{
    nu_pin_uart_init();
    nu_pin_emac_init();
    nu_pin_sdh_init();
    nu_pin_qspi_init();
    nu_pin_spi_init();
    nu_pin_i2c_init();
    nu_pin_pwm_init();
    nu_pin_i2s_init();
    nu_pin_can_init();
    nu_pin_adc_init();
#if defined(BSP_USING_USBD)
    nu_pin_usbd_init();
#endif

    nu_pin_usbh_init();
}

void nu_pin_deinit(void)
{

}