commit 1fe976d308acb6374c899a4ee8025a0a016e453e upstream. Since commit fee2d546414d ("net: phy: marvell: mv88e6390 temperature sensor reading"), Linux reports the temperature of Topaz hwmon as constant -75°C. This is because switches from the Topaz family (88E6141 / 88E6341) have the address of the temperature sensor register different from Peridot. This address is instead compatible with 88E1510 PHYs, as was used for Topaz before the above mentioned commit. Create a new mapping table between switch family and PHY ID for families which don't have a model number. And define PHY IDs for Topaz and Peridot families. Create a new PHY ID and a new PHY driver for Topaz's internal PHY. The only difference from Peridot's PHY driver is the HWMON probing method. Prior this change Topaz's internal PHY is detected by kernel as: PHY [...] driver [Marvell 88E6390] (irq=63) And afterwards as: PHY [...] driver [Marvell 88E6341 Family] (irq=63) Signed-off-by: Pali Rohár <pali@kernel.org> BugLink: https://github.com/globalscaletechnologies/linux/issues/1 Fixes: fee2d546414d ("net: phy: marvell: mv88e6390 temperature sensor reading") Reviewed-by: Marek Behún <kabel@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _MARVELL_PHY_H
|
|
#define _MARVELL_PHY_H
|
|
|
|
/* Mask used for ID comparisons */
|
|
#define MARVELL_PHY_ID_MASK 0xfffffff0
|
|
|
|
/* Known PHY IDs */
|
|
#define MARVELL_PHY_ID_88E1101 0x01410c60
|
|
#define MARVELL_PHY_ID_88E1112 0x01410c90
|
|
#define MARVELL_PHY_ID_88E1111 0x01410cc0
|
|
#define MARVELL_PHY_ID_88E1118 0x01410e10
|
|
#define MARVELL_PHY_ID_88E1121R 0x01410cb0
|
|
#define MARVELL_PHY_ID_88E1145 0x01410cd0
|
|
#define MARVELL_PHY_ID_88E1149R 0x01410e50
|
|
#define MARVELL_PHY_ID_88E1240 0x01410e30
|
|
#define MARVELL_PHY_ID_88E1318S 0x01410e90
|
|
#define MARVELL_PHY_ID_88E1340S 0x01410dc0
|
|
#define MARVELL_PHY_ID_88E1116R 0x01410e40
|
|
#define MARVELL_PHY_ID_88E1510 0x01410dd0
|
|
#define MARVELL_PHY_ID_88E1540 0x01410eb0
|
|
#define MARVELL_PHY_ID_88E1545 0x01410ea0
|
|
#define MARVELL_PHY_ID_88E1548P 0x01410ec0
|
|
#define MARVELL_PHY_ID_88E3016 0x01410e60
|
|
#define MARVELL_PHY_ID_88X3310 0x002b09a0
|
|
#define MARVELL_PHY_ID_88E2110 0x002b09b0
|
|
|
|
/* These Ethernet switch families contain embedded PHYs, but they do
|
|
* not have a model ID. So the switch driver traps reads to the ID2
|
|
* register and returns the switch family ID
|
|
*/
|
|
#define MARVELL_PHY_ID_88E6341_FAMILY 0x01410f41
|
|
#define MARVELL_PHY_ID_88E6390_FAMILY 0x01410f90
|
|
|
|
#define MARVELL_PHY_FAMILY_ID(id) ((id) >> 4)
|
|
|
|
/* struct phy_device dev_flags definitions */
|
|
#define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001
|
|
#define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002
|
|
#define MARVELL_PHY_LED0_LINK_LED1_ACTIVE 0x00000004
|
|
|
|
#endif /* _MARVELL_PHY_H */
|