mirror of
https://github.com/micropython/micropython.git
synced 2025-07-21 04:51:12 +02:00
esp32/network_lan: Add PHY_GENERIC device type.
Support the new PHY_GENERIC device type, added in ESP-IDF v5.4.0 [1].
This PHY driver was added to ESP-IDF to support "generic"/oddball PHY
LAN chips like the JL1101, which offer no features beyond the bare
802.3 PHY standard and don't actually need a chip-specific driver (see
discussion at [2]).
[1] 0738314308
[2] https://github.com/espressif/esp-eth-drivers/pull/28
Signed-off-by: Elvis Pfutzenreuter <epxx@epxx.co>
This commit is contained in:
@@ -148,6 +148,7 @@ Required keyword arguments for the constructor:
|
||||
- ``mdc`` and ``mdio`` - :class:`machine.Pin` objects (or integers) specifying
|
||||
the MDC and MDIO pins.
|
||||
- ``phy_type`` - Select the PHY device type. Supported devices are
|
||||
``PHY_GENERIC``,
|
||||
``PHY_LAN8710``, ``PHY_LAN8720``, ``PHY_IP101``, ``PHY_RTL8201``,
|
||||
``PHY_DP83848``, ``PHY_KSZ8041`` and ``PHY_KSZ8081``. These values are all
|
||||
constants defined in the ``network`` module.
|
||||
|
@@ -35,12 +35,22 @@
|
||||
#define PHY_LAN867X_ENABLED (0)
|
||||
#endif
|
||||
|
||||
// PHY_GENERIC support requires newer IDF version
|
||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 0) && CONFIG_IDF_TARGET_ESP32
|
||||
#define PHY_GENERIC_ENABLED (1)
|
||||
#else
|
||||
#define PHY_GENERIC_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
|
||||
#if PHY_GENERIC_ENABLED
|
||||
PHY_GENERIC,
|
||||
#endif
|
||||
// PHYs which are actually SPI Ethernet MAC+PHY chips:
|
||||
PHY_KSZ8851SNL = 100, PHY_DM9051, PHY_W5500
|
||||
};
|
||||
|
@@ -50,6 +50,9 @@
|
||||
#if PHY_LAN867X_ENABLED
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_LAN8670), MP_ROM_INT(PHY_LAN8670) },
|
||||
#endif
|
||||
#if PHY_GENERIC_ENABLED
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_GENERIC), MP_ROM_INT(PHY_GENERIC) },
|
||||
#endif
|
||||
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
{ MP_ROM_QSTR(MP_QSTR_PHY_KSZ8851SNL), MP_ROM_INT(PHY_KSZ8851SNL) },
|
||||
|
@@ -163,6 +163,9 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
#if PHY_LAN867X_ENABLED
|
||||
args[ARG_phy_type].u_int != PHY_LAN8670 &&
|
||||
#endif
|
||||
#if PHY_GENERIC_ENABLED
|
||||
args[ARG_phy_type].u_int != PHY_GENERIC &&
|
||||
#endif
|
||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
args[ARG_phy_type].u_int != PHY_KSZ8851SNL &&
|
||||
@@ -243,6 +246,11 @@ static mp_obj_t get_lan(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_ar
|
||||
self->phy = esp_eth_phy_new_lan867x(&phy_config);
|
||||
break;
|
||||
#endif
|
||||
#if PHY_GENERIC_ENABLED
|
||||
case PHY_GENERIC:
|
||||
self->phy = esp_eth_phy_new_generic(&phy_config);
|
||||
break;
|
||||
#endif
|
||||
#endif // CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||
|
Reference in New Issue
Block a user