icplus: fix interrupt for IC+ 101A/G and 1001LF
This patch fixes and adds the irq handler for the IC+ 101A/G where we need to read the reg17 to clean the irq. Also remove the flag for the 1001LF where no interrupt can be used for this device. Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3bc17d10c9
commit
996f73937c
@ -40,6 +40,7 @@ MODULE_LICENSE("GPL");
|
|||||||
#define IP1001_PHASE_SEL_MASK 3 /* IP1001 RX/TXPHASE_SEL */
|
#define IP1001_PHASE_SEL_MASK 3 /* IP1001 RX/TXPHASE_SEL */
|
||||||
#define IP1001_APS_ON 11 /* IP1001 APS Mode bit */
|
#define IP1001_APS_ON 11 /* IP1001 APS Mode bit */
|
||||||
#define IP101A_G_APS_ON 2 /* IP101A/G APS Mode bit */
|
#define IP101A_G_APS_ON 2 /* IP101A/G APS Mode bit */
|
||||||
|
#define IP101A_G_IRQ_CONF_STATUS 0x11 /* Conf Info IRQ & Status Reg */
|
||||||
|
|
||||||
static int ip175c_config_init(struct phy_device *phydev)
|
static int ip175c_config_init(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
@ -185,6 +186,15 @@ static int ip175c_config_aneg(struct phy_device *phydev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ip101a_g_ack_interrupt(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
int err = phy_read(phydev, IP101A_G_IRQ_CONF_STATUS);
|
||||||
|
if (err < 0)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static struct phy_driver ip175c_driver = {
|
static struct phy_driver ip175c_driver = {
|
||||||
.phy_id = 0x02430d80,
|
.phy_id = 0x02430d80,
|
||||||
.name = "ICPlus IP175C",
|
.name = "ICPlus IP175C",
|
||||||
@ -204,7 +214,6 @@ static struct phy_driver ip1001_driver = {
|
|||||||
.phy_id_mask = 0x0ffffff0,
|
.phy_id_mask = 0x0ffffff0,
|
||||||
.features = PHY_GBIT_FEATURES | SUPPORTED_Pause |
|
.features = PHY_GBIT_FEATURES | SUPPORTED_Pause |
|
||||||
SUPPORTED_Asym_Pause,
|
SUPPORTED_Asym_Pause,
|
||||||
.flags = PHY_HAS_INTERRUPT,
|
|
||||||
.config_init = &ip1001_config_init,
|
.config_init = &ip1001_config_init,
|
||||||
.config_aneg = &genphy_config_aneg,
|
.config_aneg = &genphy_config_aneg,
|
||||||
.read_status = &genphy_read_status,
|
.read_status = &genphy_read_status,
|
||||||
@ -220,6 +229,7 @@ static struct phy_driver ip101a_g_driver = {
|
|||||||
.features = PHY_BASIC_FEATURES | SUPPORTED_Pause |
|
.features = PHY_BASIC_FEATURES | SUPPORTED_Pause |
|
||||||
SUPPORTED_Asym_Pause,
|
SUPPORTED_Asym_Pause,
|
||||||
.flags = PHY_HAS_INTERRUPT,
|
.flags = PHY_HAS_INTERRUPT,
|
||||||
|
.ack_interrupt = ip101a_g_ack_interrupt,
|
||||||
.config_init = &ip101a_g_config_init,
|
.config_init = &ip101a_g_config_init,
|
||||||
.config_aneg = &genphy_config_aneg,
|
.config_aneg = &genphy_config_aneg,
|
||||||
.read_status = &genphy_read_status,
|
.read_status = &genphy_read_status,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user