291 lines
7.7 KiB
C
291 lines
7.7 KiB
C
/*
|
||
* Copyright : (C) 2022 Phytium Information Technology, Inc.
|
||
* All Rights Reserved.
|
||
*
|
||
* This program is OPEN SOURCE software: you can redistribute it and/or modify it
|
||
* under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd,
|
||
* either version 1.0 of the License, or (at your option) any later version.
|
||
*
|
||
* This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY;
|
||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
* See the Phytium Public License for more details.
|
||
*
|
||
*
|
||
* FilePath: fiopad_config.c
|
||
* Date: 2022-02-10 14:53:42
|
||
* LastEditTime: 2022-02-18 08:25:29
|
||
* Description: This files is for io-pad function definition
|
||
*
|
||
* Modify History:
|
||
* Ver Who Date Changes
|
||
* ----- ------ -------- --------------------------------------
|
||
* 1.0 huanghe 2021/11/5 init commit
|
||
* 1.1 zhugengyu 2022/3/21 adopt to lastest tech spec.
|
||
*/
|
||
|
||
/***************************** Include Files *********************************/
|
||
#include "fiopad.h"
|
||
#include "fparameters.h"
|
||
#include "fpinctrl.h"
|
||
|
||
/************************** Constant Definitions *****************************/
|
||
|
||
/**************************** Type Definitions *******************************/
|
||
|
||
/***************** Macros (Inline Functions) Definitions *********************/
|
||
|
||
/************************** Function Prototypes ******************************/
|
||
|
||
/*****************************************************************************/
|
||
/**
|
||
* @name: FIOPadSetSpimMux
|
||
* @msg: set iopad mux for spim
|
||
* @return {*}
|
||
* @param {u32} spim_id, instance id of spi
|
||
*/
|
||
void FIOPadSetSpimMux(u32 spim_id)
|
||
{
|
||
if (FSPI2_ID == spim_id)
|
||
{
|
||
FPinSetFunc(FIOPAD_A29, FPIN_FUNC0); /* sclk */
|
||
FPinSetFunc(FIOPAD_C29, FPIN_FUNC0); /* txd */
|
||
FPinSetFunc(FIOPAD_C27, FPIN_FUNC0); /* rxd */
|
||
FPinSetFunc(FIOPAD_A27, FPIN_FUNC0); /* csn0 */
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @name: FIOPadSetGpioMux
|
||
* @msg: set iopad mux for gpio
|
||
* @return {*}
|
||
* @param {u32} gpio_id, instance id of gpio
|
||
* @param {u32} pin_id, index of pin
|
||
*/
|
||
void FIOPadSetGpioMux(u32 gpio_id, u32 pin_id)
|
||
{
|
||
if (FGPIO_ID_3 == gpio_id)
|
||
{
|
||
switch (pin_id)
|
||
{
|
||
case 3: /* gpio 3-a-3 */
|
||
FPinSetFunc(FIOPAD_A29, FPIN_FUNC6);
|
||
break;
|
||
case 4: /* gpio 3-a-4 */
|
||
FPinSetFunc(FIOPAD_C29, FPIN_FUNC6);
|
||
break;
|
||
case 5: /* gpio 3-a-5 */
|
||
FPinSetFunc(FIOPAD_C27, FPIN_FUNC6);
|
||
break;
|
||
case 6: /* gpio 3-a-6 */
|
||
FPinSetFunc(FIOPAD_A27, FPIN_FUNC6);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @name: FIOPadSetMioMux
|
||
* @msg: set iopad mux for mio
|
||
* @return {*}
|
||
* @param {u32} mio_id, instance id of i2c
|
||
*/
|
||
void FIOPadSetMioMux(u32 mio_id)
|
||
{
|
||
switch (mio_id)
|
||
{
|
||
case MIO_INSTANCE_0:
|
||
{
|
||
FPinSetFunc(FIOPAD_A37, FPIN_FUNC5); /* scl */
|
||
FPinSetFunc(FIOPAD_A39, FPIN_FUNC5); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_1:
|
||
{
|
||
FPinSetFunc(FIOPAD_A41, FPIN_FUNC5); /* scl */
|
||
FPinSetFunc(FIOPAD_C41, FPIN_FUNC5); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_2:
|
||
{
|
||
FPinSetFunc(FIOPAD_A43, FPIN_FUNC5); /* scl */
|
||
FPinSetFunc(FIOPAD_A45, FPIN_FUNC5); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_3:
|
||
{
|
||
FPinSetFunc(FIOPAD_BA51, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_BA49, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_4:
|
||
{
|
||
FPinSetFunc(FIOPAD_R55, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_U55, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_5:
|
||
{
|
||
FPinSetFunc(FIOPAD_W45, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_U53, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_6:
|
||
{
|
||
FPinSetFunc(FIOPAD_AA53, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_AA55, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_7:
|
||
{
|
||
FPinSetFunc(FIOPAD_A35, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_C35, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_8:
|
||
{
|
||
FPinSetFunc(FIOPAD_AA45, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_W45, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_9:
|
||
{
|
||
FPinSetFunc(FIOPAD_AA47, FPIN_FUNC4); /* scl */
|
||
FPinSetFunc(FIOPAD_U45, FPIN_FUNC4); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_10:
|
||
{
|
||
FPinSetFunc(FIOPAD_C45, FPIN_FUNC5); /* scl */
|
||
FPinSetFunc(FIOPAD_A47, FPIN_FUNC5); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_11:
|
||
{
|
||
FPinSetFunc(FIOPAD_N23, FPIN_FUNC3); /* scl */
|
||
FPinSetFunc(FIOPAD_L25, FPIN_FUNC3); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_12:
|
||
{
|
||
FPinSetFunc(FIOPAD_E37, FPIN_FUNC3); /* scl */
|
||
FPinSetFunc(FIOPAD_L41, FPIN_FUNC3); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_13:
|
||
{
|
||
FPinSetFunc(FIOPAD_J45, FPIN_FUNC6); /* scl */
|
||
FPinSetFunc(FIOPAD_N45, FPIN_FUNC6); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_14:
|
||
{
|
||
FPinSetFunc(FIOPAD_L47, FPIN_FUNC6); /* scl */
|
||
FPinSetFunc(FIOPAD_L45, FPIN_FUNC6); /* sda */
|
||
}
|
||
break;
|
||
case MIO_INSTANCE_15:
|
||
{
|
||
FPinSetFunc(FIOPAD_N49, FPIN_FUNC6); /* scl */
|
||
FPinSetFunc(FIOPAD_J49, FPIN_FUNC6); /* sda */
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @name: FIOPadSetTachoMux
|
||
* @msg: set iopad mux for pwm_in
|
||
* @return {*}
|
||
* @param {u32} pwm_in_id, instance id of tacho
|
||
*/
|
||
void FIOPadSetTachoMux(u32 pwm_in_id)
|
||
{
|
||
switch (pwm_in_id)
|
||
{
|
||
case TACHO_INSTANCE_0:
|
||
FPinSetFunc(FIOPAD_AN53, FPIN_FUNC1);
|
||
break;
|
||
case TACHO_INSTANCE_1:
|
||
FPinSetFunc(FIOPAD_AJ55, FPIN_FUNC1);
|
||
break;
|
||
case TACHO_INSTANCE_2:
|
||
FPinSetFunc(FIOPAD_AG55, FPIN_FUNC1);
|
||
break;
|
||
case TACHO_INSTANCE_3:
|
||
FPinSetFunc(FIOPAD_AE55, FPIN_FUNC1);
|
||
break;
|
||
case TACHO_INSTANCE_4:
|
||
FPinSetFunc(FIOPAD_AC53, FPIN_FUNC1);
|
||
break;
|
||
case TACHO_INSTANCE_5:
|
||
FPinSetFunc(FIOPAD_BA49, FPIN_FUNC1);
|
||
break;
|
||
case TACHO_INSTANCE_6:
|
||
FPinSetFunc(FIOPAD_C33, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_7:
|
||
FPinSetFunc(FIOPAD_A37, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_8:
|
||
FPinSetFunc(FIOPAD_A41, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_9:
|
||
FPinSetFunc(FIOPAD_A43, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_10:
|
||
FPinSetFunc(FIOPAD_C45, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_11:
|
||
FPinSetFunc(FIOPAD_A29, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_12:
|
||
FPinSetFunc(FIOPAD_C27, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_13:
|
||
FPinSetFunc(FIOPAD_AA45, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_14:
|
||
FPinSetFunc(FIOPAD_AA47, FPIN_FUNC2);
|
||
break;
|
||
case TACHO_INSTANCE_15:
|
||
FPinSetFunc(FIOPAD_G55, FPIN_FUNC2);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @name: FIOPadSetUartMux
|
||
* @msg: set iopad mux for uart
|
||
* @return {*}
|
||
* @param {u32} uart_id, instance id of uart
|
||
*/
|
||
void FIOPadSetUartMux(u32 uart_id)
|
||
{
|
||
switch (uart_id)
|
||
{
|
||
case FUART0_ID:
|
||
FPinSetFunc(FIOPAD_J33, FPIN_FUNC4);
|
||
FPinSetFunc(FIOPAD_J35, FPIN_FUNC4);
|
||
break;
|
||
case FUART1_ID:
|
||
FPinSetFunc(FIOPAD_AW47, FPIN_FUNC0);
|
||
FPinSetFunc(FIOPAD_AU47, FPIN_FUNC0);
|
||
break;
|
||
case FUART2_ID:
|
||
FPinSetFunc(FIOPAD_A43, FPIN_FUNC0);
|
||
FPinSetFunc(FIOPAD_A45, FPIN_FUNC0);
|
||
break;
|
||
case FUART3_ID:
|
||
FPinSetFunc(FIOPAD_L33, FPIN_FUNC2);
|
||
FPinSetFunc(FIOPAD_N31, FPIN_FUNC2);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
} |