mirror of
https://github.com/micropython/micropython.git
synced 2025-07-21 04:51:12 +02:00
esp32/network_lan: Add support for LAN8670 PHY.
This adds support for LAN8670 to the esp32 port. Enabled conditionally for the esp32 target, if ESP-IDF version is new enough (v5.3 or newer). Fixes issue #15731. Signed-off-by: Damien George <damien@micropython.org> Signed-off-by: Angus Gratton <angus@redyak.com.au>
This commit is contained in:
committed by
Damien George
parent
f48b981567
commit
10f6c0699e
@@ -5,5 +5,10 @@ dependencies:
|
||||
rules:
|
||||
- if: "target in [esp32s2, esp32s3]"
|
||||
version: "~1.0.0"
|
||||
espressif/lan867x:
|
||||
version: "~1.0.0"
|
||||
rules:
|
||||
- if: "target == esp32"
|
||||
- if: "idf_version >=5.3"
|
||||
idf:
|
||||
version: ">=5.2.0"
|
||||
|
@@ -28,7 +28,22 @@
|
||||
|
||||
#include "esp_netif.h"
|
||||
|
||||
enum { PHY_LAN8710, PHY_LAN8720, PHY_IP101, PHY_RTL8201, PHY_DP83848, PHY_KSZ8041, PHY_KSZ8081, PHY_KSZ8851SNL = 100, PHY_DM9051, PHY_W5500 };
|
||||
// lan867x component requires newer IDF version
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 3, 0) && CONFIG_IDF_TARGET_ESP32
|
||||
#define PHY_LAN867X_ENABLED (1)
|
||||
#else
|
||||
#define PHY_LAN867X_ENABLED (0)
|
||||
#endif
|
||||
|
||||
enum {
|
||||
// PHYs supported by the internal Ethernet MAC:
|
||||
PHY_LAN8710, PHY_LAN8720, PHY_IP101, PHY_RTL8201, PHY_DP83848, PHY_KSZ8041, PHY_KSZ8081,
|
||||
#if PHY_LAN867X_ENABLED
|
||||
PHY_LAN8670,
|
||||
#endif
|
||||
// PHYs which are actually SPI Ethernet MAC+PHY chips:
|
||||
PHY_KSZ8851SNL = 100, PHY_DM9051, PHY_W5500
|
||||
};
|
||||
#define IS_SPI_PHY(NUM) (NUM >= 100)
|
||||
enum { ETH_INITIALIZED, ETH_STARTED, ETH_STOPPED, ETH_CONNECTED, ETH_DISCONNECTED, ETH_GOT_IP };
|
||||
|
||||
|
@@ -47,6 +47,9 @@
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_DP83848), MP_ROM_INT(PHY_DP83848) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_KSZ8041), MP_ROM_INT(PHY_KSZ8041) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_KSZ8081), MP_ROM_INT(PHY_KSZ8081) },
|
||||
#if PHY_LAN867X_ENABLED
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_LAN8670), MP_ROM_INT(PHY_LAN8670) },
|
||||
#endif
|
||||
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_KSZ8851SNL), MP_ROM_INT(PHY_KSZ8851SNL) },
|
||||
|
@@ -45,6 +45,10 @@
|
||||
#include "modnetwork.h"
|
||||
#include "extmod/modnetwork.h"
|
||||
|
||||
#if PHY_LAN867X_ENABLED
|
||||
#include "esp_eth_phy_lan867x.h"
|
||||
#endif
|
||||
|
||||
typedef struct _lan_if_obj_t {
|
||||
base_if_obj_t base;
|
||||
bool initialized;
|
||||
@@ -156,6 +160,9 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
args[ARG_phy_type].u_int != PHY_RTL8201 &&
|
||||
args[ARG_phy_type].u_int != PHY_KSZ8041 &&
|
||||
args[ARG_phy_type].u_int != PHY_KSZ8081 &&
|
||||
#if PHY_LAN867X_ENABLED
|
||||
args[ARG_phy_type].u_int != PHY_LAN8670 &&
|
||||
#endif
|
||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
args[ARG_phy_type].u_int != PHY_KSZ8851SNL &&
|
||||
@@ -231,7 +238,12 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
case PHY_KSZ8081:
|
||||
self->phy = esp_eth_phy_new_ksz80xx(&phy_config);
|
||||
break;
|
||||
#if PHY_LAN867X_ENABLED
|
||||
case PHY_LAN8670:
|
||||
self->phy = esp_eth_phy_new_lan867x(&phy_config);
|
||||
break;
|
||||
#endif
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
case PHY_KSZ8851SNL: {
|
||||
|
Reference in New Issue
Block a user