mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 07:34:06 +08:00
r8169: change interrupt mask type to u32
RTL8125 uses a 32 bit interrupt mask even though only bits in the lower 16 bits are used. Change interrupt mask size to u32 to be prepared and reintroduce helper rtl_get_events. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1a4f1a024c
commit
c1d532d268
@ -645,7 +645,7 @@ struct rtl8169_private {
|
|||||||
struct page *Rx_databuff[NUM_RX_DESC]; /* Rx data buffers */
|
struct page *Rx_databuff[NUM_RX_DESC]; /* Rx data buffers */
|
||||||
struct ring_info tx_skb[NUM_TX_DESC]; /* Tx data buffers */
|
struct ring_info tx_skb[NUM_TX_DESC]; /* Tx data buffers */
|
||||||
u16 cp_cmd;
|
u16 cp_cmd;
|
||||||
u16 irq_mask;
|
u32 irq_mask;
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
@ -1313,7 +1313,12 @@ static u8 rtl8168d_efuse_read(struct rtl8169_private *tp, int reg_addr)
|
|||||||
RTL_R32(tp, EFUSEAR) & EFUSEAR_DATA_MASK : ~0;
|
RTL_R32(tp, EFUSEAR) & EFUSEAR_DATA_MASK : ~0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rtl_ack_events(struct rtl8169_private *tp, u16 bits)
|
static u32 rtl_get_events(struct rtl8169_private *tp)
|
||||||
|
{
|
||||||
|
return RTL_R16(tp, IntrStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void rtl_ack_events(struct rtl8169_private *tp, u32 bits)
|
||||||
{
|
{
|
||||||
RTL_W16(tp, IntrStatus, bits);
|
RTL_W16(tp, IntrStatus, bits);
|
||||||
}
|
}
|
||||||
@ -1337,7 +1342,7 @@ static void rtl_irq_enable(struct rtl8169_private *tp)
|
|||||||
static void rtl8169_irq_mask_and_ack(struct rtl8169_private *tp)
|
static void rtl8169_irq_mask_and_ack(struct rtl8169_private *tp)
|
||||||
{
|
{
|
||||||
rtl_irq_disable(tp);
|
rtl_irq_disable(tp);
|
||||||
rtl_ack_events(tp, 0xffff);
|
rtl_ack_events(tp, 0xffffffff);
|
||||||
/* PCI commit */
|
/* PCI commit */
|
||||||
RTL_R8(tp, ChipCmd);
|
RTL_R8(tp, ChipCmd);
|
||||||
}
|
}
|
||||||
@ -5854,9 +5859,10 @@ release_descriptor:
|
|||||||
static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
|
static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
|
||||||
{
|
{
|
||||||
struct rtl8169_private *tp = dev_instance;
|
struct rtl8169_private *tp = dev_instance;
|
||||||
u16 status = RTL_R16(tp, IntrStatus);
|
u32 status = rtl_get_events(tp);
|
||||||
|
|
||||||
if (!tp->irq_enabled || status == 0xffff || !(status & tp->irq_mask))
|
if (!tp->irq_enabled || (status & 0xffff) == 0xffff ||
|
||||||
|
!(status & tp->irq_mask))
|
||||||
return IRQ_NONE;
|
return IRQ_NONE;
|
||||||
|
|
||||||
if (unlikely(status & SYSErr)) {
|
if (unlikely(status & SYSErr)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user