From 35a78bf20033d5d7b1c53cb5616732dbf6ec9890 Mon Sep 17 00:00:00 2001 From: Biju Das Date: Sat, 23 Apr 2022 14:07:43 +0100 Subject: [PATCH 1/9] dt-bindings: can: renesas,rcar-canfd: Document RZ/G2UL support Add CANFD binding documentation for Renesas R9A07G043 (RZ/G2UL) SoC. Link: https://lore.kernel.org/all/20220423130743.123198-1-biju.das.jz@bp.renesas.com Signed-off-by: Biju Das Acked-by: Krzysztof Kozlowski Reviewed-by: Geert Uytterhoeven Signed-off-by: Marc Kleine-Budde --- .../devicetree/bindings/net/can/renesas,rcar-canfd.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml index 648740270731..9fc137fafed9 100644 --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml @@ -33,6 +33,7 @@ properties: - items: - enum: + - renesas,r9a07g043-canfd # RZ/G2UL - renesas,r9a07g044-canfd # RZ/G2{L,LC} - renesas,r9a07g054-canfd # RZ/V2L - const: renesas,rzg2l-canfd # RZ/G2L family From e1cf330fa28acc342e527baf12298a5fd8219bad Mon Sep 17 00:00:00 2001 From: Jakub Kicinski Date: Fri, 29 Apr 2022 10:44:46 -0700 Subject: [PATCH 2/9] can: m_can: remove a copy of the NAPI_POLL_WEIGHT define Defining local versions of NAPI_POLL_WEIGHT with the same values in the drivers just makes refactoring harder. Link: https://lore.kernel.org/all/20220429174446.196655-1-kuba@kernel.org Signed-off-by: Jakub Kicinski Signed-off-by: Marc Kleine-Budde --- drivers/net/can/m_can/m_can.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 2779bba390f2..e6d2da4a9f41 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -77,9 +77,6 @@ enum m_can_reg { M_CAN_TXEFA = 0xf8, }; -/* napi related */ -#define M_CAN_NAPI_WEIGHT 64 - /* message ram configuration data length */ #define MRAM_CFG_LEN 8 @@ -951,7 +948,7 @@ static int m_can_rx_peripheral(struct net_device *dev) struct m_can_classdev *cdev = netdev_priv(dev); int work_done; - work_done = m_can_rx_handler(dev, M_CAN_NAPI_WEIGHT); + work_done = m_can_rx_handler(dev, NAPI_POLL_WEIGHT); /* Don't re-enable interrupts if the driver had a fatal error * (e.g., FIFO read failure). @@ -1474,7 +1471,7 @@ static int m_can_dev_setup(struct m_can_classdev *cdev) if (!cdev->is_peripheral) netif_napi_add(dev, &cdev->napi, - m_can_poll, M_CAN_NAPI_WEIGHT); + m_can_poll, NAPI_POLL_WEIGHT); /* Shared properties of all M_CAN versions */ cdev->version = m_can_version; @@ -1994,7 +1991,7 @@ int m_can_class_register(struct m_can_classdev *cdev) if (cdev->is_peripheral) { ret = can_rx_offload_add_manual(cdev->net, &cdev->offload, - M_CAN_NAPI_WEIGHT); + NAPI_POLL_WEIGHT); if (ret) goto clk_disable; } From 5f02ecbe08d6a3434a14b92bee98adec76e8808e Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 24 Apr 2022 18:28:11 +0200 Subject: [PATCH 3/9] docs: networking: device drivers: can: add ctucanfd to index This patch adds the ctucanfd-driver document to the index. Link: https://lore.kernel.org/all/e4396244da6b008c671def9f50bb983a10389863.1650816929.git.pisa@cmp.felk.cvut.cz Signed-off-by: Pavel Pisa [mkl: split into separate patches] Signed-off-by: Marc Kleine-Budde --- Documentation/networking/device_drivers/can/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/networking/device_drivers/can/index.rst b/Documentation/networking/device_drivers/can/index.rst index 58b6e0ad3030..0c3cc6633559 100644 --- a/Documentation/networking/device_drivers/can/index.rst +++ b/Documentation/networking/device_drivers/can/index.rst @@ -10,6 +10,7 @@ Contents: .. toctree:: :maxdepth: 2 + ctu/ctucanfd-driver freescale/flexcan .. only:: subproject and html From 75790ef3b796abefe9a0f6a90288b7ae9971fd3c Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 24 Apr 2022 18:28:11 +0200 Subject: [PATCH 4/9] docs: networking: device drivers: can: ctucanfd: update author e-mail This patch updates the author's email address. Link: https://lore.kernel.org/all/e4396244da6b008c671def9f50bb983a10389863.1650816929.git.pisa@cmp.felk.cvut.cz Cc: Odrej Ille Signed-off-by: Pavel Pisa [mkl: split into separate patches] Signed-off-by: Marc Kleine-Budde --- .../networking/device_drivers/can/ctu/ctucanfd-driver.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/networking/device_drivers/can/ctu/ctucanfd-driver.rst b/Documentation/networking/device_drivers/can/ctu/ctucanfd-driver.rst index 797fb45be187..2fde5551e756 100644 --- a/Documentation/networking/device_drivers/can/ctu/ctucanfd-driver.rst +++ b/Documentation/networking/device_drivers/can/ctu/ctucanfd-driver.rst @@ -536,7 +536,7 @@ CTU CAN FD Driver Sources Reference CTU CAN FD IP Core and Driver Development Acknowledgment --------------------------------------------------------- -* Odrej Ille +* Odrej Ille * started the project as student at Department of Measurement, FEE, CTU * invested great amount of personal time and enthusiasm to the project over years From 704fd176204577459beadb37d46e164d376fabc3 Mon Sep 17 00:00:00 2001 From: Jiapeng Chong Date: Fri, 22 Apr 2022 04:28:52 +0800 Subject: [PATCH 5/9] can: ctucanfd: remove unused including Eliminate the follow versioncheck warning: | drivers/net/can/ctucanfd/ctucanfd_base.c: 34 linux/version.h not needed. Link: https://lore.kernel.org/all/20220421202852.2693-1-jiapeng.chong@linux.alibaba.com Reported-by: Abaci Robot Signed-off-by: Jiapeng Chong Acked-by: Pave Pisa Signed-off-by: Marc Kleine-Budde --- drivers/net/can/ctucanfd/ctucanfd_base.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/can/ctucanfd/ctucanfd_base.c b/drivers/net/can/ctucanfd/ctucanfd_base.c index 7a4550f60abb..be90136be442 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_base.c +++ b/drivers/net/can/ctucanfd/ctucanfd_base.c @@ -31,7 +31,6 @@ #include #include #include -#include #include "ctucanfd.h" #include "ctucanfd_kregs.h" From e715d4459485377273c085d30992b8f9d70eede0 Mon Sep 17 00:00:00 2001 From: Jiapeng Chong Date: Fri, 22 Apr 2022 04:32:42 +0800 Subject: [PATCH 6/9] can: ctucanfd: ctucan_platform_probe(): remove unnecessary print function dev_err() The print function dev_err() is redundant because platform_get_irq() already prints an error. Eliminate the follow coccicheck warnings: | drivers/net/can/ctucanfd/ctucanfd_platform.c:67:2-9: | line 67 is redundant because platform_get_irq() already prints an error. Link: https://lore.kernel.org/all/20220421203242.7335-1-jiapeng.chong@linux.alibaba.com Reported-by: Abaci Robot Signed-off-by: Jiapeng Chong Acked-by: Pave Pisa Signed-off-by: Marc Kleine-Budde --- drivers/net/can/ctucanfd/ctucanfd_platform.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/can/ctucanfd/ctucanfd_platform.c b/drivers/net/can/ctucanfd/ctucanfd_platform.c index 5e4806068662..89d54c2151e1 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_platform.c +++ b/drivers/net/can/ctucanfd/ctucanfd_platform.c @@ -64,7 +64,6 @@ static int ctucan_platform_probe(struct platform_device *pdev) } irq = platform_get_irq(pdev, 0); if (irq < 0) { - dev_err(dev, "Cannot find interrupt.\n"); ret = irq; goto err; } From a51491ac6ed2f55d0c4b65bc8370b3833dca6b7b Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 24 Apr 2022 18:28:08 +0200 Subject: [PATCH 7/9] can: ctucanfd: remove inline keyword from local static functions This patch removes the inline keywords from the local static functions to make both checkpatch.pl and patchwork happy. Link: https://lore.kernel.org/all/1fd684bcf5ddb0346aad234072f54e976a5210fb.1650816929.git.pisa@cmp.felk.cvut.cz Signed-off-by: Pavel Pisa [mkl: split into separate patches] Signed-off-by: Marc Kleine-Budde --- drivers/net/can/ctucanfd/ctucanfd_base.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/can/ctucanfd/ctucanfd_base.c b/drivers/net/can/ctucanfd/ctucanfd_base.c index be90136be442..10c2517a395b 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_base.c +++ b/drivers/net/can/ctucanfd/ctucanfd_base.c @@ -132,13 +132,12 @@ static u32 ctucan_read32_be(struct ctucan_priv *priv, return ioread32be(priv->mem_base + reg); } -static inline void ctucan_write32(struct ctucan_priv *priv, enum ctu_can_fd_can_registers reg, - u32 val) +static void ctucan_write32(struct ctucan_priv *priv, enum ctu_can_fd_can_registers reg, u32 val) { priv->write_reg(priv, reg, val); } -static inline u32 ctucan_read32(struct ctucan_priv *priv, enum ctu_can_fd_can_registers reg) +static u32 ctucan_read32(struct ctucan_priv *priv, enum ctu_can_fd_can_registers reg) { return priv->read_reg(priv, reg); } @@ -485,7 +484,7 @@ static int ctucan_do_set_mode(struct net_device *ndev, enum can_mode mode) * * Return: Status of TXT buffer */ -static inline enum ctucan_txtb_status ctucan_get_tx_status(struct ctucan_priv *priv, u8 buf) +static enum ctucan_txtb_status ctucan_get_tx_status(struct ctucan_priv *priv, u8 buf) { u32 tx_status = ctucan_read32(priv, CTUCANFD_TX_STATUS); enum ctucan_txtb_status status = (tx_status >> (buf * 4)) & 0x7; From e391a0f7be617b16a3b4d1092596519bd96889a4 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 24 Apr 2022 18:28:08 +0200 Subject: [PATCH 8/9] can: ctucanfd: remove debug statements This patch removes the debug statements from the driver to make checkpatch.pl and patchwork happy. Link: https://lore.kernel.org/all/1fd684bcf5ddb0346aad234072f54e976a5210fb.1650816929.git.pisa@cmp.felk.cvut.cz Signed-off-by: Pavel Pisa [mkl: split into separate patches] Signed-off-by: Marc Kleine-Budde --- drivers/net/can/ctucanfd/ctucanfd_base.c | 26 ------------------------ 1 file changed, 26 deletions(-) diff --git a/drivers/net/can/ctucanfd/ctucanfd_base.c b/drivers/net/can/ctucanfd/ctucanfd_base.c index 10c2517a395b..2ada097d1ede 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_base.c +++ b/drivers/net/can/ctucanfd/ctucanfd_base.c @@ -177,8 +177,6 @@ static int ctucan_reset(struct net_device *ndev) struct ctucan_priv *priv = netdev_priv(ndev); int i = 100; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - ctucan_write32(priv, CTUCANFD_MODE, REG_MODE_RST); clear_bit(CTUCANFD_FLAG_RX_FFW_BUFFERED, &priv->drv_flags); @@ -264,8 +262,6 @@ static int ctucan_set_bittiming(struct net_device *ndev) struct ctucan_priv *priv = netdev_priv(ndev); struct can_bittiming *bt = &priv->can.bittiming; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - /* Note that bt may be modified here */ return ctucan_set_btr(ndev, bt, true); } @@ -281,8 +277,6 @@ static int ctucan_set_data_bittiming(struct net_device *ndev) struct ctucan_priv *priv = netdev_priv(ndev); struct can_bittiming *dbt = &priv->can.data_bittiming; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - /* Note that dbt may be modified here */ return ctucan_set_btr(ndev, dbt, false); } @@ -300,8 +294,6 @@ static int ctucan_set_secondary_sample_point(struct net_device *ndev) int ssp_offset = 0; u32 ssp_cfg = 0; /* No SSP by default */ - ctucan_netdev_dbg(ndev, "%s\n", __func__); - if (CTU_CAN_FD_ENABLED(priv)) { netdev_err(ndev, "BUG! Cannot set SSP - CAN is enabled\n"); return -EPERM; @@ -388,8 +380,6 @@ static int ctucan_chip_start(struct net_device *ndev) int err; struct can_ctrlmode mode; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - priv->txb_prio = 0x01234567; priv->txb_head = 0; priv->txb_tail = 0; @@ -455,8 +445,6 @@ static int ctucan_do_set_mode(struct net_device *ndev, enum can_mode mode) { int ret; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - switch (mode) { case CAN_MODE_START: ret = ctucan_reset(ndev); @@ -1121,8 +1109,6 @@ static irqreturn_t ctucan_interrupt(int irq, void *dev_id) u32 imask; int irq_loops; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - for (irq_loops = 0; irq_loops < 10000; irq_loops++) { /* Get the interrupt status */ isr = ctucan_read32(priv, CTUCANFD_INT_STAT); @@ -1196,8 +1182,6 @@ static void ctucan_chip_stop(struct net_device *ndev) u32 mask = 0xffffffff; u32 mode; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - /* Disable interrupts and disable CAN */ ctucan_write32(priv, CTUCANFD_INT_ENA_CLR, mask); ctucan_write32(priv, CTUCANFD_INT_MASK_SET, mask); @@ -1220,8 +1204,6 @@ static int ctucan_open(struct net_device *ndev) struct ctucan_priv *priv = netdev_priv(ndev); int ret; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - ret = pm_runtime_get_sync(priv->dev); if (ret < 0) { netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", @@ -1281,8 +1263,6 @@ static int ctucan_close(struct net_device *ndev) { struct ctucan_priv *priv = netdev_priv(ndev); - ctucan_netdev_dbg(ndev, "%s\n", __func__); - netif_stop_queue(ndev); napi_disable(&priv->napi); ctucan_chip_stop(ndev); @@ -1308,8 +1288,6 @@ static int ctucan_get_berr_counter(const struct net_device *ndev, struct can_ber struct ctucan_priv *priv = netdev_priv(ndev); int ret; - ctucan_netdev_dbg(ndev, "%s\n", __func__); - ret = pm_runtime_get_sync(priv->dev); if (ret < 0) { netdev_err(ndev, "%s: pm_runtime_get failed(%d)\n", __func__, ret); @@ -1335,8 +1313,6 @@ int ctucan_suspend(struct device *dev) struct net_device *ndev = dev_get_drvdata(dev); struct ctucan_priv *priv = netdev_priv(ndev); - ctucan_netdev_dbg(ndev, "%s\n", __func__); - if (netif_running(ndev)) { netif_stop_queue(ndev); netif_device_detach(ndev); @@ -1353,8 +1329,6 @@ int ctucan_resume(struct device *dev) struct net_device *ndev = dev_get_drvdata(dev); struct ctucan_priv *priv = netdev_priv(ndev); - ctucan_netdev_dbg(ndev, "%s\n", __func__); - priv->can.state = CAN_STATE_ERROR_ACTIVE; if (netif_running(ndev)) { From 28b250e070e9a45a814d13c4ae756aab1298ff27 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Sun, 24 Apr 2022 18:28:08 +0200 Subject: [PATCH 9/9] can: ctucanfd: remove PCI module debug parameters This patch removes the PCI module debug parameters, which are not needed anymore, to make both checkpatch.pl and patchwork happy. Link: https://lore.kernel.org/all/1fd684bcf5ddb0346aad234072f54e976a5210fb.1650816929.git.pisa@cmp.felk.cvut.cz Signed-off-by: Pavel Pisa [mkl: split into separate patches] Signed-off-by: Marc Kleine-Budde --- drivers/net/can/ctucanfd/ctucanfd_pci.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/drivers/net/can/ctucanfd/ctucanfd_pci.c b/drivers/net/can/ctucanfd/ctucanfd_pci.c index c37a42480533..8f2956a8ae43 100644 --- a/drivers/net/can/ctucanfd/ctucanfd_pci.c +++ b/drivers/net/can/ctucanfd/ctucanfd_pci.c @@ -45,14 +45,6 @@ #define CTUCAN_WITHOUT_CTUCAN_ID 0 #define CTUCAN_WITH_CTUCAN_ID 1 -static bool use_msi = true; -module_param(use_msi, bool, 0444); -MODULE_PARM_DESC(use_msi, "PCIe implementation use MSI interrupts. Default: 1 (yes)"); - -static bool pci_use_second = true; -module_param(pci_use_second, bool, 0444); -MODULE_PARM_DESC(pci_use_second, "Use the second CAN core on PCIe card. Default: 1 (yes)"); - struct ctucan_pci_board_data { void __iomem *bar0_base; void __iomem *cra_base; @@ -117,13 +109,11 @@ static int ctucan_pci_probe(struct pci_dev *pdev, goto err_disable_device; } - if (use_msi) { - ret = pci_enable_msi(pdev); - if (!ret) { - dev_info(dev, "MSI enabled\n"); - pci_set_master(pdev); - msi_ok = 1; - } + ret = pci_enable_msi(pdev); + if (!ret) { + dev_info(dev, "MSI enabled\n"); + pci_set_master(pdev); + msi_ok = 1; } dev_info(dev, "ctucan BAR0 0x%08llx 0x%08llx\n", @@ -184,7 +174,7 @@ static int ctucan_pci_probe(struct pci_dev *pdev, core_i++; - while (pci_use_second && (core_i < num_cores)) { + while (core_i < num_cores) { addr += 0x4000; ret = ctucan_probe_common(dev, addr, irq, ntxbufs, 100000000, 0, ctucan_pci_set_drvdata);