lkml.org 
[lkml]   [2020]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.7 195/274] mt76: mt7615: fix mt7615_driver_own routine
    Date
    From: Lorenzo Bianconi <lorenzo@kernel.org>

    [ Upstream commit 338061619185133f56ac17365deb1e75eaecc604 ]

    Introduce MT_PCIE_DOORBELL_PUSH register to fix mt7615_driver_own
    routine for mt7663e

    Fixes: f40ac0f3d3c0 ("mt76: mt7615: introduce mt7663e support")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 6 +++++-
    drivers/net/wireless/mediatek/mt76/mt7615/regs.h | 1 +
    2 files changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
    index 0d56e0834bde..29a7aaabb6da 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
    @@ -1526,16 +1526,20 @@ static void mt7622_trigger_hif_int(struct mt7615_dev *dev, bool en)

    static int mt7615_driver_own(struct mt7615_dev *dev)
    {
    + struct mt76_dev *mdev = &dev->mt76;
    u32 addr;

    - addr = is_mt7663(&dev->mt76) ? MT_CONN_HIF_ON_LPCTL : MT_CFG_LPCR_HOST;
    + addr = is_mt7663(mdev) ? MT_PCIE_DOORBELL_PUSH : MT_CFG_LPCR_HOST;
    mt76_wr(dev, addr, MT_CFG_LPCR_HOST_DRV_OWN);

    mt7622_trigger_hif_int(dev, true);
    +
    + addr = is_mt7663(mdev) ? MT_CONN_HIF_ON_LPCTL : MT_CFG_LPCR_HOST;
    if (!mt76_poll_msec(dev, addr, MT_CFG_LPCR_HOST_FW_OWN, 0, 3000)) {
    dev_err(dev->mt76.dev, "Timeout for driver own\n");
    return -EIO;
    }
    +
    mt7622_trigger_hif_int(dev, false);

    return 0;
    diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/regs.h b/drivers/net/wireless/mediatek/mt76/mt7615/regs.h
    index f7c2a633841c..de0ef165c0ba 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7615/regs.h
    +++ b/drivers/net/wireless/mediatek/mt76/mt7615/regs.h
    @@ -65,6 +65,7 @@ enum mt7615_reg_base {
    #define MT_HIF2_BASE 0xf0000
    #define MT_HIF2(ofs) (MT_HIF2_BASE + (ofs))
    #define MT_PCIE_IRQ_ENABLE MT_HIF2(0x188)
    +#define MT_PCIE_DOORBELL_PUSH MT_HIF2(0x1484)

    #define MT_CFG_LPCR_HOST MT_HIF(0x1f0)
    #define MT_CFG_LPCR_HOST_FW_OWN BIT(0)
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-09 02:44    [W:4.127 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site