|
@@ -118,7 +118,7 @@ static void set_i2s_pin(char *config, i2s_pin_config_t *pin_config) {
|
|
|
* Get i2s config structure from config string
|
|
|
*/
|
|
|
const i2s_platform_config_t * config_get_i2s_from_str(char * dac_config ){
|
|
|
- static i2s_platform_config_t i2s_dac_pin = {
|
|
|
+ static EXT_RAM_ATTR i2s_platform_config_t i2s_dac_pin = {
|
|
|
.i2c_addr = -1,
|
|
|
.sda= -1,
|
|
|
.scl = -1,
|
|
@@ -146,16 +146,26 @@ const i2s_platform_config_t * config_get_i2s_from_str(char * dac_config ){
|
|
|
* Get eth config structure from config string
|
|
|
*/
|
|
|
const eth_config_t * config_get_eth_from_str(char * eth_config ){
|
|
|
- static eth_config_t eth_pin = {
|
|
|
- .mdc = -1,
|
|
|
- .mdio = -1,
|
|
|
- .rst = -1,
|
|
|
+ static EXT_RAM_ATTR eth_config_t eth_pin = {
|
|
|
+ .rmii = false,
|
|
|
+ .model = "",
|
|
|
};
|
|
|
char * p=NULL;
|
|
|
|
|
|
+ if ((p = strcasestr(eth_config, "model")) != NULL) sscanf(p, "%*[^=]=%15[^,]", eth_pin.model);
|
|
|
if ((p = strcasestr(eth_config, "mdc")) != NULL) eth_pin.mdc = atoi(strchr(p, '=') + 1);
|
|
|
if ((p = strcasestr(eth_config, "mdio")) != NULL) eth_pin.mdio = atoi(strchr(p, '=') + 1);
|
|
|
if ((p = strcasestr(eth_config, "rst")) != NULL) eth_pin.rst = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "mosi")) != NULL) eth_pin.mosi = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "miso")) != NULL) eth_pin.miso = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "intr")) != NULL) eth_pin.intr = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "cs")) != NULL) eth_pin.cs = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "speed")) != NULL) eth_pin.speed = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "clk")) != NULL) eth_pin.clk = atoi(strchr(p, '=') + 1);
|
|
|
+ if ((p = strcasestr(eth_config, "host")) != NULL) eth_pin.host = atoi(strchr(p, '=') + 1);
|
|
|
+
|
|
|
+ if (strcasestr(eth_pin.model, "lan8720")) eth_pin.rmii = true;
|
|
|
+
|
|
|
return ð_pin;
|
|
|
}
|
|
|
|
|
@@ -164,7 +174,7 @@ const eth_config_t * config_get_eth_from_str(char * eth_config ){
|
|
|
*/
|
|
|
const i2s_platform_config_t * config_spdif_get( ){
|
|
|
char * spdif_config = config_spdif_get_string();
|
|
|
- static i2s_platform_config_t i2s_dac_config;
|
|
|
+ static EXT_RAM_ATTR i2s_platform_config_t i2s_dac_config;
|
|
|
memcpy(&i2s_dac_config, config_get_i2s_from_str(spdif_config), sizeof(i2s_dac_config));
|
|
|
free(spdif_config);
|
|
|
return &i2s_dac_config;
|
|
@@ -175,7 +185,7 @@ const i2s_platform_config_t * config_spdif_get( ){
|
|
|
*/
|
|
|
const i2s_platform_config_t * config_dac_get(){
|
|
|
char * spdif_config = get_dac_config_string();
|
|
|
- static i2s_platform_config_t i2s_dac_config;
|
|
|
+ static EXT_RAM_ATTR i2s_platform_config_t i2s_dac_config;
|
|
|
memcpy(&i2s_dac_config, config_get_i2s_from_str(spdif_config), sizeof(i2s_dac_config));
|
|
|
free(spdif_config);
|
|
|
return &i2s_dac_config;
|
|
@@ -185,9 +195,19 @@ const i2s_platform_config_t * config_dac_get(){
|
|
|
* Get ethernet config structure
|
|
|
*/
|
|
|
const eth_config_t * config_eth_get( ){
|
|
|
- char * config = config_alloc_get_str("eth_config", CONFIG_ETH_CONFIG, "mdc=" STR(CONFIG_MDC_IO)
|
|
|
- ",mdio=" STR(CONFIG_MDIO_IO) ",do=" STR(CONFIG_PHY_RST_IO));
|
|
|
- static eth_config_t eth_config;
|
|
|
+ char * config = config_alloc_get_str("eth_config", CONFIG_ETH_CONFIG, "rst=" STR(CONFIG_ETH_PHY_RST_IO)
|
|
|
+#if defined(CONFIG_ETH_LAN8720)
|
|
|
+ ",model=lan8720"
|
|
|
+#elif defined(CONFIG_ETH_DM9051)
|
|
|
+ ",model=dm9051"
|
|
|
+#endif
|
|
|
+ ",mdc=" STR(CONFIG_ETH_MDC_IO) ",mdio=" STR(CONFIG_ETH_MDIO_IO)
|
|
|
+ ",host=" STR(CONFIG_ETH_SPI_HOST) ",cs=" STR(CONFIG_ETH_SPI_CS_IO)
|
|
|
+ ",mosi=" STR(CONFIG_ETH_SPI_MOSI_IO) ",miso=" STR(CONFIG_ETH_SPI_MISO_IO)
|
|
|
+ ",intr=" STR(CONFIG_ETH_SPI_INTR_IO)
|
|
|
+ ",clk=" STR(CONFIG_ETH_SPI_CLK_IO) ",speed=" STR(CONFIG_ETH_SPI_SPEED) );
|
|
|
+ static EXT_RAM_ATTR eth_config_t eth_config;
|
|
|
+ ESP_LOGD(TAG, "Ethernet config string %s", config);
|
|
|
memcpy(ð_config, config_get_eth_from_str(config), sizeof(eth_config));
|
|
|
free(config);
|
|
|
return ð_config;
|