mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-29 20:30:35 +00:00
![Maxime Chevallier](/assets/img/avatar_default.png)
There exists several examples today of devices that embed an ethernet PHY or PCS directly inside an SoC. In this situation, either the device is controlled through a vendor-specific register set, or sometimes exposes the standard 802.3 registers that are typically accessed over MDIO. As phylib and phylink are designed to use mdiodevices, this driver allows creating a virtual MDIO bus, that translates mdiodev register accesses to regmap accesses. The reason we use regmap is because there are at least 3 such devices known today, 2 of them are Altera TSE PCS's, memory-mapped, exposed with a 4-byte stride in stmmac's dwmac-socfpga variant, and a 2-byte stride in altera-tse. The other one (nxp,sja1110-base-tx-mdio) is exposed over SPI. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Signed-off-by: David S. Miller <davem@davemloft.net>
26 lines
586 B
C
26 lines
586 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Driver for MMIO-Mapped MDIO devices. Some IPs expose internal PHYs or PCS
|
|
* within the MMIO-mapped area
|
|
*
|
|
* Copyright (C) 2023 Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|
*/
|
|
#ifndef MDIO_REGMAP_H
|
|
#define MDIO_REGMAP_H
|
|
|
|
#include <linux/phy.h>
|
|
|
|
struct device;
|
|
struct regmap;
|
|
|
|
struct mdio_regmap_config {
|
|
struct device *parent;
|
|
struct regmap *regmap;
|
|
char name[MII_BUS_ID_SIZE];
|
|
u8 valid_addr;
|
|
bool autoscan;
|
|
};
|
|
|
|
struct mii_bus *devm_mdio_regmap_register(struct device *dev,
|
|
const struct mdio_regmap_config *config);
|
|
|
|
#endif
|