can: ems_pci: Deassert hardware reset
authorGerhard Uttenthaler <uttenthaler@ems-wuensche.com>
Fri, 20 Jan 2023 11:26:15 +0000 (12:26 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Thu, 2 Feb 2023 16:33:51 +0000 (17:33 +0100)
The reset line from the Asix chip to the SJA1000 is asserted after boot up
until it is deasserted by a register write

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
Link: https://lore.kernel.org/all/20230120112616.6071-8-uttenthaler@ems-wuensche.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/sja1000/ems_pci.c

index 1f237acd7bd11b46afde39081e4e5de9320e8305..212d051c53c00610b6f61ee04d2e386def19e67e 100644 (file)
@@ -326,6 +326,14 @@ static int ems_pci_add_card(struct pci_dev *pdev,
                }
        }
 
+       if (card->version == 3) {
+               /* ASIX chip asserts local reset to CAN controllers
+                * after bootup until it is deasserted
+                */
+               writel(readl(card->conf_addr + ASIX_LIEMR) & ~ASIX_LIEMR_LRST,
+                      card->conf_addr + ASIX_LIEMR);
+       }
+
        ems_pci_card_reset(card);
 
        /* Detect available channels */