FreeCalypso > hg > fc-selenite
diff src/cs/drivers/drv_core/armio/armio.c @ 203:ba3693cbd40e
src/cs: sync with Magnetite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 29 Jun 2020 00:27:13 +0000 |
parents | d05fb947b50d |
children |
line wrap: on
line diff
--- a/src/cs/drivers/drv_core/armio/armio.c Sun Jun 28 23:54:05 2020 +0000 +++ b/src/cs/drivers/drv_core/armio/armio.c Mon Jun 29 00:27:13 2020 +0000 @@ -35,6 +35,12 @@ #include "armio/armio.h" #include "abb/abb.h" // for AI_Power function : to be removed, use ABB_Power_Off in abb.c file instead !!! +#ifdef CONFIG_TANGO_MODEM +#include "ffs/ffs_api.h" + +SYS_UWORD8 AI_Tango_pinmux[4]; +#endif + #if (CHIPSET != 12) /* * AI_EnableBit @@ -267,33 +273,33 @@ // For targets other than GTM900, we enable the audio amplifier // if we are in an MMI!=0 build - for ACI builds use the AT@SPKR command. #ifdef CONFIG_TARGET_GTM900 - *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F01; + *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F05; #elif (MMI != 0) || defined(CONFIG_GPIO1_HIGH) - *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F02; + *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F06; #else - *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F00; + *((volatile SYS_UWORD16 *) ARMIO_OUT) = 0x3F04; #endif // ARMIO_CNTL_REG register configuration : // set IOs 1,2,5,7,9,14 and 15 as ouputs. - // bits conditionalized on CONFIG_TARGET_GTAMODEM or CONFIG_TARGET_FCFAM - // are FreeCalypso additions - #if defined(CONFIG_TARGET_GTAMODEM) || defined(CONFIG_TARGET_FCFAM) || \ - defined(CONFIG_TARGET_GTM900) + // all others are FreeCalypso additions + #if defined(CONFIG_GPIO046_OUTPUTS) || defined(CONFIG_TARGET_GTM900) AI_ConfigBitAsOutput(0); #endif - AI_ConfigBitAsOutput(1); - #ifndef CONFIG_TARGET_LEONARDO /* GPIO 2 is an input on Leonardo! */ - AI_ConfigBitAsOutput(2); + #ifndef CONFIG_TANGO_MODEM /* we do dynamic config on Tango instead */ + AI_ConfigBitAsOutput(1); + #ifndef CONFIG_TARGET_LEONARDO /* GPIO 2 is an input on Leonardo! */ + AI_ConfigBitAsOutput(2); + #endif + #ifdef CONFIG_GPIO3_OUTPUT + AI_ConfigBitAsOutput(3); + #endif #endif - #ifdef CONFIG_GPIO3_OUTPUT - AI_ConfigBitAsOutput(3); - #endif - #if defined(CONFIG_TARGET_GTAMODEM) || defined(CONFIG_TARGET_FCFAM) + #ifdef CONFIG_GPIO046_OUTPUTS AI_ConfigBitAsOutput(4); #endif AI_ConfigBitAsOutput(5); - #if defined(CONFIG_TARGET_GTAMODEM) || defined(CONFIG_TARGET_FCFAM) + #ifdef CONFIG_GPIO046_OUTPUTS AI_ConfigBitAsOutput(6); #endif AI_ConfigBitAsOutput(7); @@ -314,6 +320,83 @@ #endif } +#ifdef CONFIG_TANGO_MODEM +void AI_Init_Tango_pinmux(void) +{ + ffs_file_read("/etc/tango-pinmux", AI_Tango_pinmux, 4); + /* apply this config */ + if (AI_Tango_pinmux[0] & 0x80) { + if (AI_Tango_pinmux[0] & 1) + AI_SetBit(1); + else + AI_ResetBit(1); + AI_ConfigBitAsOutput(1); + } + /* GPIO2 config */ + if (AI_Tango_pinmux[1] & 0x02) { + if (AI_Tango_pinmux[1] & 0x01) + AI_SetBit(2); + else + AI_ResetBit(2); + AI_ConfigBitAsOutput(2); + } + /* GPIO3 config */ + if (AI_Tango_pinmux[1] & 0x20) { + if (AI_Tango_pinmux[1] & 0x10) + AI_SetBit(3); + else + AI_ResetBit(3); + AI_ConfigBitAsOutput(3); + } + /* RESET_OUT/IO7 config */ + if (AI_Tango_pinmux[2] & 0x08) { + AI_EnableBit(3); + if (AI_Tango_pinmux[2] & 0x02) { + if (AI_Tango_pinmux[2] & 0x01) + AI_SetBit(7); + else + AI_ResetBit(7); + } else + AI_ConfigBitAsInput(7); + } + /* MCSI/GPIO config */ + if (AI_Tango_pinmux[2] & 0x80) { + if (AI_Tango_pinmux[3] & 0x10) { + if (AI_Tango_pinmux[3] & 0x01) + AI_SetBit(9); + else + AI_ResetBit(9); + } else + AI_ConfigBitAsInput(9); + AI_EnableBit(5); + AI_EnableBit(6); + AI_EnableBit(7); + AI_EnableBit(8); + if (AI_Tango_pinmux[3] & 0x20) { + if (AI_Tango_pinmux[3] & 0x02) + AI_SetBit(10); + else + AI_ResetBit(10); + AI_ConfigBitAsOutput(10); + } + if (AI_Tango_pinmux[3] & 0x40) { + if (AI_Tango_pinmux[3] & 0x04) + AI_SetBit(11); + else + AI_ResetBit(11); + AI_ConfigBitAsOutput(11); + } + if (AI_Tango_pinmux[3] & 0x80) { + if (AI_Tango_pinmux[3] & 0x08) + AI_SetBit(12); + else + AI_ResetBit(12); + AI_ConfigBitAsOutput(12); + } + } +} +#endif + /* * AI_SelectIOForIT *