linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3
@ 2023-01-20 11:26 Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 1/8] can: ems_pci: Fix code style, copyright and email address Gerhard Uttenthaler
                   ` (8 more replies)
  0 siblings, 9 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

The CPC-PCIe v3 uses an Asix AX99100 instead of the discontinued 
PLX PCI9030 bridge chip. This patch series adds support for this 
card version and cleans some code styling issues.

Gerhard Uttenthaler (8):
  Fix code style, copyright and email address
  Add Asix AX99100 definitions
  Initialize BAR registers
  Add read/write register and post irq functions
  Initialize CAN controller base addresses
  Add IRQ enable
  Deassert hardware reset
  Add myself as module author

 drivers/net/can/sja1000/ems_pci.c | 154 ++++++++++++++++++++++--------
 1 file changed, 115 insertions(+), 39 deletions(-)

-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v2 1/8] can: ems_pci: Fix code style, copyright and email address
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 2/8] can: ems_pci: Add Asix AX99100 definitions Gerhard Uttenthaler
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Fix code style complained by checkpatch.pl, add Copyright and 
fix email address

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 45 ++++++++++++++-----------------
 1 file changed, 20 insertions(+), 25 deletions(-)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index 4ab91759a5c6..0ee6e1c908d3 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -3,6 +3,7 @@
  * Copyright (C) 2007 Wolfgang Grandegger <wg@grandegger.com>
  * Copyright (C) 2008 Markus Plessing <plessing@ems-wuensche.com>
  * Copyright (C) 2008 Sebastian Haas <haas@ems-wuensche.com>
+ * Copyright (C) 2023 EMS Dr. Thomas Wuensche
  */
 
 #include <linux/kernel.h>
@@ -19,7 +20,7 @@
 
 #define DRV_NAME  "ems_pci"
 
-MODULE_AUTHOR("Sebastian Haas <haas@ems-wuenche.com>");
+MODULE_AUTHOR("Sebastian Haas <support@ems-wuensche.com>");
 MODULE_DESCRIPTION("Socket-CAN driver for EMS CPC-PCI/PCIe/104P CAN cards");
 MODULE_LICENSE("GPL v2");
 
@@ -40,8 +41,7 @@ struct ems_pci_card {
 
 #define EMS_PCI_CAN_CLOCK (16000000 / 2)
 
-/*
- * Register definitions and descriptions are from LinCAN 0.3.3.
+/* Register definitions and descriptions are from LinCAN 0.3.3.
  *
  * PSB4610 PITA-2 bridge control registers
  */
@@ -52,8 +52,7 @@ struct ems_pci_card {
 #define PITA2_MISC          0x1c	/* Miscellaneous Register */
 #define PITA2_MISC_CONFIG   0x04000000	/* Multiplexed parallel interface */
 
-/*
- * Register definitions for the PLX 9030
+/* Register definitions for the PLX 9030
  */
 #define PLX_ICSR            0x4c   /* Interrupt Control/Status register */
 #define PLX_ICSR_LINTI1_ENA 0x0001 /* LINTi1 Enable */
@@ -62,8 +61,7 @@ struct ems_pci_card {
 #define PLX_ICSR_ENA_CLR    (PLX_ICSR_LINTI1_ENA | PLX_ICSR_PCIINT_ENA | \
 			     PLX_ICSR_LINTI1_CLR)
 
-/*
- * The board configuration is probably following:
+/* The board configuration is probably following:
  * RX1 is connected to ground.
  * TX1 is not connected.
  * CLKO is not connected.
@@ -72,8 +70,7 @@ struct ems_pci_card {
  */
 #define EMS_PCI_OCR         (OCR_TX0_PUSHPULL | OCR_TX1_PUSHPULL)
 
-/*
- * In the CDR register, you should set CBP to 1.
+/* In the CDR register, you should set CBP to 1.
  * You will probably also want to set the clock divider value to 7
  * (meaning direct oscillator output) because the second SJA1000 chip
  * is driven by the first one CLKOUT output.
@@ -100,8 +97,7 @@ static const struct pci_device_id ems_pci_tbl[] = {
 };
 MODULE_DEVICE_TABLE(pci, ems_pci_tbl);
 
-/*
- * Helper to read internal registers from card logic (not CAN)
+/* Helper to read internal registers from card logic (not CAN)
  */
 static u8 ems_pci_v1_readb(struct ems_pci_card *card, unsigned int port)
 {
@@ -146,8 +142,7 @@ static void ems_pci_v2_post_irq(const struct sja1000_priv *priv)
 	writel(PLX_ICSR_ENA_CLR, card->conf_addr + PLX_ICSR);
 }
 
-/*
- * Check if a CAN controller is present at the specified location
+/* Check if a CAN controller is present at the specified location
  * by trying to set 'em into the PeliCAN mode
  */
 static inline int ems_pci_check_chan(const struct sja1000_priv *priv)
@@ -185,10 +180,10 @@ static void ems_pci_del_card(struct pci_dev *pdev)
 		free_sja1000dev(dev);
 	}
 
-	if (card->base_addr != NULL)
+	if (card->base_addr)
 		pci_iounmap(card->pci_dev, card->base_addr);
 
-	if (card->conf_addr != NULL)
+	if (card->conf_addr)
 		pci_iounmap(card->pci_dev, card->conf_addr);
 
 	kfree(card);
@@ -202,8 +197,7 @@ static void ems_pci_card_reset(struct ems_pci_card *card)
 	writeb(0, card->base_addr);
 }
 
-/*
- * Probe PCI device for EMS CAN signature and register each available
+/* Probe PCI device for EMS CAN signature and register each available
  * CAN channel to SJA1000 Socket-CAN subsystem.
  */
 static int ems_pci_add_card(struct pci_dev *pdev,
@@ -222,8 +216,8 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 	}
 
 	/* Allocating card structures to hold addresses, ... */
-	card = kzalloc(sizeof(struct ems_pci_card), GFP_KERNEL);
-	if (card == NULL) {
+	card = kzalloc(sizeof(*card), GFP_KERNEL);
+	if (!card) {
 		pci_disable_device(pdev);
 		return -ENOMEM;
 	}
@@ -248,13 +242,13 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 
 	/* Remap configuration space and controller memory area */
 	card->conf_addr = pci_iomap(pdev, 0, conf_size);
-	if (card->conf_addr == NULL) {
+	if (!card->conf_addr) {
 		err = -ENOMEM;
 		goto failure_cleanup;
 	}
 
 	card->base_addr = pci_iomap(pdev, base_bar, EMS_PCI_BASE_SIZE);
-	if (card->base_addr == NULL) {
+	if (!card->base_addr) {
 		err = -ENOMEM;
 		goto failure_cleanup;
 	}
@@ -281,7 +275,7 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 	/* Detect available channels */
 	for (i = 0; i < max_chan; i++) {
 		dev = alloc_sja1000dev(0);
-		if (dev == NULL) {
+		if (!dev) {
 			err = -ENOMEM;
 			goto failure_cleanup;
 		}
@@ -325,8 +319,9 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 			/* Register SJA1000 device */
 			err = register_sja1000dev(dev);
 			if (err) {
-				dev_err(&pdev->dev, "Registering device failed "
-							"(err=%d)\n", err);
+				dev_err(&pdev->dev,
+					"Registering device failed: %pe\n",
+					ERR_PTR(err));
 				free_sja1000dev(dev);
 				goto failure_cleanup;
 			}
@@ -334,7 +329,7 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 			card->channels++;
 
 			dev_info(&pdev->dev, "Channel #%d at 0x%p, irq %d\n",
-					i + 1, priv->reg_base, dev->irq);
+				 i + 1, priv->reg_base, dev->irq);
 		} else {
 			free_sja1000dev(dev);
 		}
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 2/8] can: ems_pci: Add Asix AX99100 definitions
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 1/8] can: ems_pci: Fix code style, copyright and email address Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 3/8] can: ems_pci: Initialize BAR registers Gerhard Uttenthaler
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Add Asix AX99100 PCI IDs and add the v3 to the ems_pci_tbl. 
Add define for maximum CAN channel count

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index 0ee6e1c908d3..9bf9793c55e2 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -26,6 +26,7 @@ MODULE_LICENSE("GPL v2");
 
 #define EMS_PCI_V1_MAX_CHAN 2
 #define EMS_PCI_V2_MAX_CHAN 4
+#define EMS_PCI_V3_MAX_CHAN 4
 #define EMS_PCI_MAX_CHAN    EMS_PCI_V2_MAX_CHAN
 
 struct ems_pci_card {
@@ -61,6 +62,15 @@ struct ems_pci_card {
 #define PLX_ICSR_ENA_CLR    (PLX_ICSR_LINTI1_ENA | PLX_ICSR_PCIINT_ENA | \
 			     PLX_ICSR_LINTI1_CLR)
 
+/* Register definitions for the ASIX99100
+ */
+#define ASIX_LINTSR 0x28 /* Interrupt Control/Status register */
+#define ASIX_LINTSR_INT0AC BIT(0) /* Writing 1 enables or clears interrupt */
+
+#define ASIX_LIEMR 0x24 /* Local Interrupt Enable / Miscellaneous Register */
+#define ASIX_LIEMR_L0EINTEN BIT(16) /* Local INT0 input assertion enable */
+#define ASIX_LIEMR_LRST BIT(14) /* Local Reset assert */
+
 /* The board configuration is probably following:
  * RX1 is connected to ground.
  * TX1 is not connected.
@@ -86,6 +96,13 @@ struct ems_pci_card {
 
 #define EMS_PCI_BASE_SIZE  4096 /* size of controller area */
 
+#ifndef PCI_VENDOR_ID_ASIX
+#define PCI_VENDOR_ID_ASIX 0x125b
+#define PCI_DEVICE_ID_ASIX_9110 0x9110
+#define PCI_SUBVENDOR_ID_ASIX 0xa000
+#endif
+#define PCI_SUBDEVICE_ID_EMS 0x4010
+
 static const struct pci_device_id ems_pci_tbl[] = {
 	/* CPC-PCI v1 */
 	{PCI_VENDOR_ID_SIEMENS, 0x2104, PCI_ANY_ID, PCI_ANY_ID,},
@@ -93,6 +110,8 @@ static const struct pci_device_id ems_pci_tbl[] = {
 	{PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9030, PCI_VENDOR_ID_PLX, 0x4000},
 	/* CPC-104P v2 */
 	{PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9030, PCI_VENDOR_ID_PLX, 0x4002},
+	/* CPC-PCIe v3 */
+	{PCI_VENDOR_ID_ASIX, PCI_DEVICE_ID_ASIX_9110, PCI_SUBVENDOR_ID_ASIX, PCI_SUBDEVICE_ID_EMS},
 	{0,}
 };
 MODULE_DEVICE_TABLE(pci, ems_pci_tbl);
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 3/8] can: ems_pci: Initialize BAR registers
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 1/8] can: ems_pci: Fix code style, copyright and email address Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 2/8] can: ems_pci: Add Asix AX99100 definitions Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 4/8] can: ems_pci: Add read/write register and post irq functions Gerhard Uttenthaler
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Fix the base register defines and their usage for all three card versions

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 37 +++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 9 deletions(-)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index 9bf9793c55e2..429183a87001 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -87,12 +87,23 @@ struct ems_pci_card {
  */
 #define EMS_PCI_CDR             (CDR_CBP | CDR_CLKOUT_MASK)
 
-#define EMS_PCI_V1_BASE_BAR     1
-#define EMS_PCI_V1_CONF_SIZE    4096 /* size of PITA control area */
-#define EMS_PCI_V2_BASE_BAR     2
-#define EMS_PCI_V2_CONF_SIZE    128 /* size of PLX control area */
-#define EMS_PCI_CAN_BASE_OFFSET 0x400 /* offset where the controllers starts */
-#define EMS_PCI_CAN_CTRL_SIZE   0x200 /* memory size for each controller */
+#define EMS_PCI_V1_BASE_BAR 1
+#define EMS_PCI_V1_CONF_BAR 0
+#define EMS_PCI_V1_CONF_SIZE 4096 /* size of PITA control area */
+#define EMS_PCI_V1_CAN_BASE_OFFSET 0x400 /* offset where the controllers start */
+#define EMS_PCI_V1_CAN_CTRL_SIZE 0x200 /* memory size for each controller */
+
+#define EMS_PCI_V2_BASE_BAR 2
+#define EMS_PCI_V2_CONF_BAR 0
+#define EMS_PCI_V2_CONF_SIZE 128 /* size of PLX control area */
+#define EMS_PCI_V2_CAN_BASE_OFFSET 0x400 /* offset where the controllers start */
+#define EMS_PCI_V2_CAN_CTRL_SIZE 0x200 /* memory size for each controller */
+
+#define EMS_PCI_V3_BASE_BAR 0
+#define EMS_PCI_V3_CONF_BAR 5
+#define EMS_PCI_V3_CONF_SIZE 128 /* size of ASIX control area */
+#define EMS_PCI_V3_CAN_BASE_OFFSET 0x00 /* offset where the controllers starts */
+#define EMS_PCI_V3_CAN_CTRL_SIZE 0x100 /* memory size for each controller */
 
 #define EMS_PCI_BASE_SIZE  4096 /* size of controller area */
 
@@ -225,7 +236,7 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 	struct sja1000_priv *priv;
 	struct net_device *dev;
 	struct ems_pci_card *card;
-	int max_chan, conf_size, base_bar;
+	int max_chan, conf_size, base_bar, conf_bar;
 	int err, i;
 
 	/* Enabling PCI device */
@@ -247,20 +258,28 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 
 	card->channels = 0;
 
-	if (pdev->vendor == PCI_VENDOR_ID_PLX) {
+	if (pdev->vendor == PCI_VENDOR_ID_ASIX) {
+		card->version = 3; /* CPC-PCI v3 */
+		max_chan = EMS_PCI_V3_MAX_CHAN;
+		base_bar = EMS_PCI_V3_BASE_BAR;
+		conf_bar = EMS_PCI_V3_CONF_BAR;
+		conf_size = EMS_PCI_V3_CONF_SIZE;
+	} else if (pdev->vendor == PCI_VENDOR_ID_PLX) {
 		card->version = 2; /* CPC-PCI v2 */
 		max_chan = EMS_PCI_V2_MAX_CHAN;
 		base_bar = EMS_PCI_V2_BASE_BAR;
+		conf_bar = EMS_PCI_V2_CONF_BAR;
 		conf_size = EMS_PCI_V2_CONF_SIZE;
 	} else {
 		card->version = 1; /* CPC-PCI v1 */
 		max_chan = EMS_PCI_V1_MAX_CHAN;
 		base_bar = EMS_PCI_V1_BASE_BAR;
+		conf_bar = EMS_PCI_V1_CONF_BAR;
 		conf_size = EMS_PCI_V1_CONF_SIZE;
 	}
 
 	/* Remap configuration space and controller memory area */
-	card->conf_addr = pci_iomap(pdev, 0, conf_size);
+	card->conf_addr = pci_iomap(pdev, conf_bar, conf_size);
 	if (!card->conf_addr) {
 		err = -ENOMEM;
 		goto failure_cleanup;
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 4/8] can: ems_pci: Add read/write register and post irq functions
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
                   ` (2 preceding siblings ...)
  2023-01-20 11:26 ` [PATCH v2 3/8] can: ems_pci: Initialize BAR registers Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 5/8] can: ems_pci: Initialize CAN controller base addresses Gerhard Uttenthaler
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Add functions to read and write SJA1000 registers and also the
post irq routine

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index 429183a87001..e9d2406d2338 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -172,6 +172,24 @@ static void ems_pci_v2_post_irq(const struct sja1000_priv *priv)
 	writel(PLX_ICSR_ENA_CLR, card->conf_addr + PLX_ICSR);
 }
 
+static u8 ems_pci_v3_read_reg(const struct sja1000_priv *priv, int port)
+{
+	return readb(priv->reg_base + port);
+}
+
+static void ems_pci_v3_write_reg(const struct sja1000_priv *priv,
+				 int port, u8 val)
+{
+	writeb(val, priv->reg_base + port);
+}
+
+static void ems_pci_v3_post_irq(const struct sja1000_priv *priv)
+{
+	struct ems_pci_card *card = (struct ems_pci_card *)priv->priv;
+
+	writel(ASIX_LINTSR_INT0AC, card->conf_addr + ASIX_LINTSR);
+}
+
 /* Check if a CAN controller is present at the specified location
  * by trying to set 'em into the PeliCAN mode
  */
@@ -330,10 +348,14 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 			priv->read_reg  = ems_pci_v1_read_reg;
 			priv->write_reg = ems_pci_v1_write_reg;
 			priv->post_irq  = ems_pci_v1_post_irq;
-		} else {
+		} else if (card->version == 2) {
 			priv->read_reg  = ems_pci_v2_read_reg;
 			priv->write_reg = ems_pci_v2_write_reg;
 			priv->post_irq  = ems_pci_v2_post_irq;
+		} else {
+			priv->read_reg  = ems_pci_v3_read_reg;
+			priv->write_reg = ems_pci_v3_write_reg;
+			priv->post_irq  = ems_pci_v3_post_irq;
 		}
 
 		/* Check if channel is present */
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 5/8] can: ems_pci: Initialize CAN controller base addresses
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
                   ` (3 preceding siblings ...)
  2023-01-20 11:26 ` [PATCH v2 4/8] can: ems_pci: Add read/write register and post irq functions Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 6/8] can: ems_pci: Add IRQ enable Gerhard Uttenthaler
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Add CAN controller base registers

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index e9d2406d2338..1d7314ea42f3 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -342,20 +342,25 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 		priv->irq_flags = IRQF_SHARED;
 
 		dev->irq = pdev->irq;
-		priv->reg_base = card->base_addr + EMS_PCI_CAN_BASE_OFFSET
-					+ (i * EMS_PCI_CAN_CTRL_SIZE);
+
 		if (card->version == 1) {
 			priv->read_reg  = ems_pci_v1_read_reg;
 			priv->write_reg = ems_pci_v1_write_reg;
 			priv->post_irq  = ems_pci_v1_post_irq;
+			priv->reg_base = card->base_addr + EMS_PCI_V1_CAN_BASE_OFFSET
+					+ (i * EMS_PCI_V1_CAN_CTRL_SIZE);
 		} else if (card->version == 2) {
 			priv->read_reg  = ems_pci_v2_read_reg;
 			priv->write_reg = ems_pci_v2_write_reg;
 			priv->post_irq  = ems_pci_v2_post_irq;
+			priv->reg_base = card->base_addr + EMS_PCI_V2_CAN_BASE_OFFSET
+					+ (i * EMS_PCI_V2_CAN_CTRL_SIZE);
 		} else {
 			priv->read_reg  = ems_pci_v3_read_reg;
 			priv->write_reg = ems_pci_v3_write_reg;
 			priv->post_irq  = ems_pci_v3_post_irq;
+			priv->reg_base = card->base_addr + EMS_PCI_V3_CAN_BASE_OFFSET
+					+ (i * EMS_PCI_V3_CAN_CTRL_SIZE);
 		}
 
 		/* Check if channel is present */
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 6/8] can: ems_pci: Add IRQ enable
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
                   ` (4 preceding siblings ...)
  2023-01-20 11:26 ` [PATCH v2 5/8] can: ems_pci: Initialize CAN controller base addresses Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 7/8] can: ems_pci: Deassert hardware reset Gerhard Uttenthaler
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Add IRQ enable

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index 1d7314ea42f3..73f3ca9ebe02 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -372,14 +372,21 @@ static int ems_pci_add_card(struct pci_dev *pdev,
 			SET_NETDEV_DEV(dev, &pdev->dev);
 			dev->dev_id = i;
 
-			if (card->version == 1)
+			if (card->version == 1) {
 				/* reset int flag of pita */
 				writel(PITA2_ICR_INT0_EN | PITA2_ICR_INT0,
 				       card->conf_addr + PITA2_ICR);
-			else
+			} else if (card->version == 2) {
 				/* enable IRQ in PLX 9030 */
 				writel(PLX_ICSR_ENA_CLR,
 				       card->conf_addr + PLX_ICSR);
+			} else {
+				/* Enable IRQ in AX99100 */
+				writel(ASIX_LINTSR_INT0AC, card->conf_addr + ASIX_LINTSR);
+				/* Enable local INT0 input enable */
+				writel(readl(card->conf_addr + ASIX_LIEMR) | ASIX_LIEMR_L0EINTEN,
+				       card->conf_addr + ASIX_LIEMR);
+			}
 
 			/* Register SJA1000 device */
 			err = register_sja1000dev(dev);
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 7/8] can: ems_pci: Deassert hardware reset
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
                   ` (5 preceding siblings ...)
  2023-01-20 11:26 ` [PATCH v2 6/8] can: ems_pci: Add IRQ enable Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-01-20 11:26 ` [PATCH v2 8/8] can: ems_pci: Add myself as module author Gerhard Uttenthaler
  2023-02-02 15:30 ` [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Marc Kleine-Budde
  8 siblings, 0 replies; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

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>
---
 drivers/net/can/sja1000/ems_pci.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index 73f3ca9ebe02..e720b7f3db34 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -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 */
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 8/8] can: ems_pci: Add myself as module author
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
                   ` (6 preceding siblings ...)
  2023-01-20 11:26 ` [PATCH v2 7/8] can: ems_pci: Deassert hardware reset Gerhard Uttenthaler
@ 2023-01-20 11:26 ` Gerhard Uttenthaler
  2023-07-20  9:29   ` Marc Kleine-Budde
  2023-02-02 15:30 ` [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Marc Kleine-Budde
  8 siblings, 1 reply; 11+ messages in thread
From: Gerhard Uttenthaler @ 2023-01-20 11:26 UTC (permalink / raw)
  To: linux-can, mkl; +Cc: vincent.mailhol, wg, Gerhard Uttenthaler

Added myself as module author

Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
---
 drivers/net/can/sja1000/ems_pci.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/can/sja1000/ems_pci.c b/drivers/net/can/sja1000/ems_pci.c
index e720b7f3db34..6c6baaeb06f9 100644
--- a/drivers/net/can/sja1000/ems_pci.c
+++ b/drivers/net/can/sja1000/ems_pci.c
@@ -21,6 +21,7 @@
 #define DRV_NAME  "ems_pci"
 
 MODULE_AUTHOR("Sebastian Haas <support@ems-wuensche.com>");
+MODULE_AUTHOR("Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>");
 MODULE_DESCRIPTION("Socket-CAN driver for EMS CPC-PCI/PCIe/104P CAN cards");
 MODULE_LICENSE("GPL v2");
 
-- 
2.35.3

--
EMS Dr. Thomas Wuensche e.K.
Sonnenhang 3
85304 Ilmmuenster
HR Ingolstadt, HRA 170106

Phone: +49-8441-490260
Fax  : +49-8441-81860
http://www.ems-wuensche.com

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3
  2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
                   ` (7 preceding siblings ...)
  2023-01-20 11:26 ` [PATCH v2 8/8] can: ems_pci: Add myself as module author Gerhard Uttenthaler
@ 2023-02-02 15:30 ` Marc Kleine-Budde
  8 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2023-02-02 15:30 UTC (permalink / raw)
  To: Gerhard Uttenthaler; +Cc: linux-can, vincent.mailhol, wg

[-- Attachment #1: Type: text/plain, Size: 561 bytes --]

On 20.01.2023 12:26:08, Gerhard Uttenthaler wrote:
> The CPC-PCIe v3 uses an Asix AX99100 instead of the discontinued 
> PLX PCI9030 bridge chip. This patch series adds support for this 
> card version and cleans some code styling issues.

Applied to linux-can-next.

Thanks,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 8/8] can: ems_pci: Add myself as module author
  2023-01-20 11:26 ` [PATCH v2 8/8] can: ems_pci: Add myself as module author Gerhard Uttenthaler
@ 2023-07-20  9:29   ` Marc Kleine-Budde
  0 siblings, 0 replies; 11+ messages in thread
From: Marc Kleine-Budde @ 2023-07-20  9:29 UTC (permalink / raw)
  To: Gerhard Uttenthaler; +Cc: linux-can, vincent.mailhol

[-- Attachment #1: Type: text/plain, Size: 630 bytes --]

On 20.01.2023 12:26:16, Gerhard Uttenthaler wrote:
> Added myself as module author
> 
> Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>

Can you create an entry in the MAINTAINERS file? To keep the file
sorted, please use "./scripts/parse-maintainers.pl --order" and copy the
resulting MAINTAINERS.new to MAINTAINERS.

regards,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde          |
Embedded Linux                   | https://www.pengutronix.de |
Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-07-20  9:36 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-20 11:26 [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 1/8] can: ems_pci: Fix code style, copyright and email address Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 2/8] can: ems_pci: Add Asix AX99100 definitions Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 3/8] can: ems_pci: Initialize BAR registers Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 4/8] can: ems_pci: Add read/write register and post irq functions Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 5/8] can: ems_pci: Initialize CAN controller base addresses Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 6/8] can: ems_pci: Add IRQ enable Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 7/8] can: ems_pci: Deassert hardware reset Gerhard Uttenthaler
2023-01-20 11:26 ` [PATCH v2 8/8] can: ems_pci: Add myself as module author Gerhard Uttenthaler
2023-07-20  9:29   ` Marc Kleine-Budde
2023-02-02 15:30 ` [PATCH v2 0/8] can: ems_pci: Add support for CPC-PCIe v3 Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).