nuttx/boards/arm/tlsr82/tlsr8278adk80d/include/board.h
wangbowen6 589647308c arm/tlsr82: move peripherals pin config to board.h
Signed-off-by: wangbowen6 <wangbowen6@xiaomi.com>
2022-09-28 09:30:06 +08:00

164 lines
5.7 KiB
C

/****************************************************************************
* boards/arm/tlsr82/tlsr8278adk80d/include/board.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __BOARDS_ARM_TLSR82_TLSR8278ADK80D_INCLUDE_BOARD_H
#define __BOARDS_ARM_TLSR82_TLSR8278ADK80D_INCLUDE_BOARD_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <nuttx/ioexpander/gpio.h>
#include "tlsr82_adc.h"
#include "tlsr82_gpio.h"
#include "tlsr82_pwm.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Board GPIO PIN Configuration
* BOARD_NGPIO : the gpio numbers, max 8
* BOARD_GPIOx_PIN : define the gpio pin number, see tlsr82_gpio.h
* BOARD_GPIOx_TYPE : define the pio type, see enum gpio_pintype_e in
* nuttx/ioexpander/gpio.h
*/
#define BOARD_NGPIO 4
#if BOARD_NGPIO > 0
# define BOARD_GPIO0_PIN GPIO_PIN_PD6
# define BOARD_GPIO0_TYPE GPIO_INPUT_PIN_PULLDOWN
#endif
#if BOARD_NGPIO > 1
# define BOARD_GPIO1_PIN GPIO_PIN_PD0
# define BOARD_GPIO1_TYPE GPIO_OUTPUT_PIN
#endif
#if BOARD_NGPIO > 2
# define BOARD_GPIO2_PIN GPIO_PIN_PD1
# define BOARD_GPIO2_TYPE GPIO_OUTPUT_PIN
#endif
#if BOARD_NGPIO > 3
# define BOARD_GPIO3_PIN GPIO_PIN_PB3
# define BOARD_GPIO3_TYPE GPIO_INTERRUPT_FALLING_PIN
#endif
#if BOARD_NGPIO > 4
# define BOARD_GPIO4_PIN GPIO_INVLD_CFG
# define BOARD_GPIO4_TYPE GPIO_NPINTYPES
#endif
#if BOARD_NGPIO > 5
# define BOARD_GPIO5_PIN GPIO_INVLD_CFG
# define BOARD_GPIO5_TYPE GPIO_NPINTYPES
#endif
#if BOARD_NGPIO > 6
# define BOARD_GPIO6_PIN GPIO_INVLD_CFG
# define BOARD_GPIO6_TYPE GPIO_NPINTYPES
#endif
#if BOARD_NGPIO > 7
# define BOARD_GPIO7_PIN GPIO_INVLD_CFG
# define BOARD_GPIO7_TYPE GPIO_NPINTYPES
#endif
#if BOARD_NGPIO > 8
# error "BOARD_NGPIO max value is 8"
#endif
/* Board UART PIN Configuration
* BOARD_UARTx_RX/TX_PIN : define the uart pin number, see tlsr82_gpio.h
* BOARD_UARTx_RX/TX_MUX : define the gpio multiplex function, should be
* UART function, see the tlsr82 datasheet
*/
#define BOARD_UART0_RX_PIN GPIO_PIN_PB0
#define BOARD_UART0_RX_MUX GPIO_AF_MUX1
#define BOARD_UART0_TX_PIN GPIO_PIN_PB1
#define BOARD_UART0_TX_MUX GPIO_AF_MUX1
/* Board ADC PIN Configuration
* BOARD_ADCx_CHAN : the ADC channel
* BOARD_ADCx_CHAN_TYPE : the ADC type,
* BOARD_ADCx_PIN : the ADC input gpio pin, please see the datasheet to
* configure this pin
* Note: For ADC_CHAN_TYPE_VBAT and ADC_CHAN_TYPE_TEMP, do not need configure
* the external sample pin, so configure it to GPIO_INVLD_CFG
*
*/
#ifdef CONFIG_TLSR82_ADC_CHAN0
# define BOARD_ADC0_CHAN ADC_CHAN_0
# define BOARD_ADC0_CHAN_TYPE ADC_CHAN_TYPE_BASE
# define BOARD_ADC0_PIN GPIO_PIN_PB2
#endif
#ifdef CONFIG_TLSR82_ADC_CHAN1
# define BOARD_ADC1_CHAN ADC_CHAN_1
# define BOARD_ADC1_CHAN_TYPE ADC_CHAN_TYPE_BASE
# define BOARD_ADC1_PIN GPIO_PIN_PB3
#endif
#ifdef CONFIG_TLSR82_ADC_CHAN2
# define BOARD_ADC2_CHAN ADC_CHAN_2
# define BOARD_ADC2_CHAN_TYPE ADC_CHAN_TYPE_BASE
# define BOARD_ADC2_PIN GPIO_PIN_PB5
#endif
#ifdef CONFIG_TLSR82_ADC_VBAT
# define BOARD_ADCVBAT_CHAN ADC_CHAN_VBAT
# define BOARD_ADCVBAT_CHAN_TYPE ADC_CHAN_TYPE_VBAT
# define BOARD_ADCVBAT_PIN GPIO_INVLD_CFG
#endif
/* Board PWM PIN Configuration
* BOARD_PWMx_PIN : define the gpio pin numbers and multiplex function,
* please refs the tlsr82 datasheet to configure the
* multiplex function.
*/
#ifdef CONFIG_TLSR82_PWM0
# define BOARD_PWM0_PIN (GPIO_PIN_PD5 | GPIO_AF_MUX0)
#endif
#ifdef CONFIG_TLSR82_PWM1
# define BOARD_PWM1_PIN (GPIO_PIN_PD3 | GPIO_AF_MUX0)
#endif
#ifdef CONFIG_TLSR82_PWM2
# define BOARD_PWM2_PIN (GPIO_PIN_PD4 | GPIO_AF_MUX2)
#endif
#ifdef CONFIG_TLSR82_PWM3
# define BOARD_PWM3_PIN (GPIO_PIN_PB4 | GPIO_AF_MUX1)
#endif
#ifdef CONFIG_TLSR82_PWM4
# define BOARD_PWM4_PIN (GPIO_INVLD_CFG)
#endif
#ifdef CONFIG_TLSR82_PWM5
# define BOARD_PWM5_PIN (GPIO_INVLD_CFG)
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#endif /* __BOARDS_ARM_TLSR82_TLSR8278ADK80D_INCLUDE_BOARD_H */