mirror of
https://github.com/micropython/micropython.git
synced 2025-07-21 21:11: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
|
- ``mdc`` and ``mdio`` - :class:`machine.Pin` objects (or integers) specifying
|
||||||
the MDC and MDIO pins.
|
the MDC and MDIO pins.
|
||||||
- ``phy_type`` - Select the PHY device type. Supported devices are
|
- ``phy_type`` - Select the PHY device type. Supported devices are
|
||||||
|
``PHY_GENERIC``,
|
||||||
``PHY_LAN8710``, ``PHY_LAN8720``, ``PHY_IP101``, ``PHY_RTL8201``,
|
``PHY_LAN8710``, ``PHY_LAN8720``, ``PHY_IP101``, ``PHY_RTL8201``,
|
||||||
``PHY_DP83848``, ``PHY_KSZ8041`` and ``PHY_KSZ8081``. These values are all
|
``PHY_DP83848``, ``PHY_KSZ8041`` and ``PHY_KSZ8081``. These values are all
|
||||||
constants defined in the ``network`` module.
|
constants defined in the ``network`` module.
|
||||||
|
@@ -35,12 +35,22 @@
|
|||||||
#define PHY_LAN867X_ENABLED (0)
|
#define PHY_LAN867X_ENABLED (0)
|
||||||
#endif
|
#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 {
|
enum {
|
||||||
// PHYs supported by the internal Ethernet MAC:
|
// PHYs supported by the internal Ethernet MAC:
|
||||||
PHY_LAN8710, PHY_LAN8720, PHY_IP101, PHY_RTL8201, PHY_DP83848, PHY_KSZ8041, PHY_KSZ8081,
|
PHY_LAN8710, PHY_LAN8720, PHY_IP101, PHY_RTL8201, PHY_DP83848, PHY_KSZ8041, PHY_KSZ8081,
|
||||||
#if PHY_LAN867X_ENABLED
|
#if PHY_LAN867X_ENABLED
|
||||||
PHY_LAN8670,
|
PHY_LAN8670,
|
||||||
#endif
|
#endif
|
||||||
|
#if PHY_GENERIC_ENABLED
|
||||||
|
PHY_GENERIC,
|
||||||
|
#endif
|
||||||
// PHYs which are actually SPI Ethernet MAC+PHY chips:
|
// PHYs which are actually SPI Ethernet MAC+PHY chips:
|
||||||
PHY_KSZ8851SNL = 100, PHY_DM9051, PHY_W5500
|
PHY_KSZ8851SNL = 100, PHY_DM9051, PHY_W5500
|
||||||
};
|
};
|
||||||
|
@@ -50,6 +50,9 @@
|
|||||||
#if PHY_LAN867X_ENABLED
|
#if PHY_LAN867X_ENABLED
|
||||||
{ MP_ROM_QSTR(MP_QSTR_PHY_LAN8670), MP_ROM_INT(PHY_LAN8670) },
|
{ MP_ROM_QSTR(MP_QSTR_PHY_LAN8670), MP_ROM_INT(PHY_LAN8670) },
|
||||||
#endif
|
#endif
|
||||||
|
#if PHY_GENERIC_ENABLED
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PHY_GENERIC), MP_ROM_INT(PHY_GENERIC) },
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||||
{ MP_ROM_QSTR(MP_QSTR_PHY_KSZ8851SNL), MP_ROM_INT(PHY_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
|
#if PHY_LAN867X_ENABLED
|
||||||
args[ARG_phy_type].u_int != PHY_LAN8670 &&
|
args[ARG_phy_type].u_int != PHY_LAN8670 &&
|
||||||
#endif
|
#endif
|
||||||
|
#if PHY_GENERIC_ENABLED
|
||||||
|
args[ARG_phy_type].u_int != PHY_GENERIC &&
|
||||||
|
#endif
|
||||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||||
args[ARG_phy_type].u_int != PHY_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);
|
self->phy = esp_eth_phy_new_lan867x(&phy_config);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
#if PHY_GENERIC_ENABLED
|
||||||
|
case PHY_GENERIC:
|
||||||
|
self->phy = esp_eth_phy_new_generic(&phy_config);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
#endif // CONFIG_IDF_TARGET_ESP32
|
#endif // CONFIG_IDF_TARGET_ESP32
|
||||||
#if CONFIG_ETH_USE_SPI_ETHERNET
|
#if CONFIG_ETH_USE_SPI_ETHERNET
|
||||||
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
#if CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL
|
||||||
|
Reference in New Issue
Block a user