mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
linux-can-next-for-6.12-20240911
-----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEEUEC6huC2BN0pvD5fKDiiPnotvG8FAmbhXBwTHG1rbEBwZW5n dXRyb25peC5kZQAKCRAoOKI+ei28byH+B/0ctrcmzjguuddiCiUkMS0EJaocxnE7 Et3eZtV66QlxLahTOQDAcePVIyeq1Rzc8vsruNu0QJje2Yp21WITQbl9x2dX/JEl sPggkKpu7ERKE1vS4+HEgr3PXbjXFbF6k38jygiswG0vYzKkBT5keHJ7f9qPC+cU BdXr+ZjYK0I5TQBOQKSH4FlKVtXSidxvYRVT4AHcQ0k3vegMc7J+/fgAaznsS85p nwV1PsXXNQh7nM5jqdMSbibL8jvgDFiSyxtQLDogqd0ah0bYOAmyiEONv6v4UGkF 1blHqiyHUnslMYgHL/C3U0cQF8ETrDd25FOpPr1pbKbW+/KueO9Y1IyP =kclM -----END PGP SIGNATURE----- Merge tag 'linux-can-next-for-6.12-20240911' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next Marc Kleine-Budde says: ==================== pull-request: can-next 2024-09-11 The first patch is by Uwe Kleine-König targets all CAN platform driver and switches back the remove function to struct platform_driver::remove(). A patch by Stefan Mätje fixes the help text of the ESD USB driver. Jake Hamby's patch masks an unneeded interrupt in the m_can driver. The last 2 patches target the rockchip_canfd driver. Arnd Bergmann's patch reworks the delay calculation for the timekeeping worker, a patch by me fixes the decoding of the error code register. * tag 'linux-can-next-for-6.12-20240911' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next: can: rockchip_canfd: rkcanfd_handle_error_int_reg_ec(): fix decoding of error code register can: rockchip_canfd: rkcanfd_timestamp_init(): rework delay calculation can: m_can: m_can_chip_config(): mask timestamp wraparound IRQ can: usb: Kconfig: Fix list of devices for esd_usb driver can: Switch back to struct platform_driver::remove() ==================== Link: https://patch.msgid.link/20240912080438.2826895-1-mkl@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
06a104d55d
@ -1191,7 +1191,7 @@ MODULE_DEVICE_TABLE(platform, at91_can_id_table);
|
||||
|
||||
static struct platform_driver at91_can_driver = {
|
||||
.probe = at91_can_probe,
|
||||
.remove_new = at91_can_remove,
|
||||
.remove = at91_can_remove,
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.of_match_table = of_match_ptr(at91_can_dt_ids),
|
||||
|
@ -1092,7 +1092,7 @@ static struct platform_driver bxcan_driver = {
|
||||
.of_match_table = bxcan_of_match,
|
||||
},
|
||||
.probe = bxcan_probe,
|
||||
.remove_new = bxcan_remove,
|
||||
.remove = bxcan_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(bxcan_driver);
|
||||
|
@ -476,7 +476,7 @@ static struct platform_driver c_can_plat_driver = {
|
||||
.of_match_table = c_can_of_table,
|
||||
},
|
||||
.probe = c_can_plat_probe,
|
||||
.remove_new = c_can_plat_remove,
|
||||
.remove = c_can_plat_remove,
|
||||
.suspend = c_can_suspend,
|
||||
.resume = c_can_resume,
|
||||
.id_table = c_can_id_table,
|
||||
|
@ -307,7 +307,7 @@ static void cc770_isa_remove(struct platform_device *pdev)
|
||||
|
||||
static struct platform_driver cc770_isa_driver = {
|
||||
.probe = cc770_isa_probe,
|
||||
.remove_new = cc770_isa_remove,
|
||||
.remove = cc770_isa_remove,
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
},
|
||||
|
@ -247,7 +247,7 @@ static struct platform_driver cc770_platform_driver = {
|
||||
.of_match_table = cc770_platform_table,
|
||||
},
|
||||
.probe = cc770_platform_probe,
|
||||
.remove_new = cc770_platform_remove,
|
||||
.remove = cc770_platform_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(cc770_platform_driver);
|
||||
|
@ -111,7 +111,7 @@ MODULE_DEVICE_TABLE(of, ctucan_of_match);
|
||||
|
||||
static struct platform_driver ctucanfd_driver = {
|
||||
.probe = ctucan_platform_probe,
|
||||
.remove_new = ctucan_platform_remove,
|
||||
.remove = ctucan_platform_remove,
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
.pm = &ctucan_platform_pm_ops,
|
||||
|
@ -2385,7 +2385,7 @@ static struct platform_driver flexcan_driver = {
|
||||
.of_match_table = flexcan_of_match,
|
||||
},
|
||||
.probe = flexcan_probe,
|
||||
.remove_new = flexcan_remove,
|
||||
.remove = flexcan_remove,
|
||||
.id_table = flexcan_id_table,
|
||||
};
|
||||
|
||||
|
@ -1725,7 +1725,7 @@ static struct platform_driver grcan_driver = {
|
||||
.of_match_table = grcan_match,
|
||||
},
|
||||
.probe = grcan_probe,
|
||||
.remove_new = grcan_remove,
|
||||
.remove = grcan_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(grcan_driver);
|
||||
|
@ -1033,7 +1033,7 @@ static struct platform_driver ifi_canfd_plat_driver = {
|
||||
.of_match_table = ifi_canfd_of_table,
|
||||
},
|
||||
.probe = ifi_canfd_plat_probe,
|
||||
.remove_new = ifi_canfd_plat_remove,
|
||||
.remove = ifi_canfd_plat_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(ifi_canfd_plat_driver);
|
||||
|
@ -2049,7 +2049,7 @@ static struct platform_driver ican3_driver = {
|
||||
.name = DRV_NAME,
|
||||
},
|
||||
.probe = ican3_probe,
|
||||
.remove_new = ican3_remove,
|
||||
.remove = ican3_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(ican3_driver);
|
||||
|
@ -1434,7 +1434,8 @@ static int m_can_chip_config(struct net_device *dev)
|
||||
|
||||
/* Disable unused interrupts */
|
||||
interrupts &= ~(IR_ARA | IR_ELO | IR_DRX | IR_TEFF | IR_TFE | IR_TCF |
|
||||
IR_HPM | IR_RF1F | IR_RF1W | IR_RF1N | IR_RF0F);
|
||||
IR_HPM | IR_RF1F | IR_RF1W | IR_RF1N | IR_RF0F |
|
||||
IR_TSW);
|
||||
|
||||
err = m_can_config_enable(cdev);
|
||||
if (err)
|
||||
|
@ -231,7 +231,7 @@ static struct platform_driver m_can_plat_driver = {
|
||||
.pm = &m_can_pmops,
|
||||
},
|
||||
.probe = m_can_plat_probe,
|
||||
.remove_new = m_can_plat_remove,
|
||||
.remove = m_can_plat_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(m_can_plat_driver);
|
||||
|
@ -435,7 +435,7 @@ static struct platform_driver mpc5xxx_can_driver = {
|
||||
.of_match_table = mpc5xxx_can_table,
|
||||
},
|
||||
.probe = mpc5xxx_can_probe,
|
||||
.remove_new = mpc5xxx_can_remove,
|
||||
.remove = mpc5xxx_can_remove,
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = mpc5xxx_can_suspend,
|
||||
.resume = mpc5xxx_can_resume,
|
||||
|
@ -907,7 +907,7 @@ static struct platform_driver rcar_can_driver = {
|
||||
.pm = &rcar_can_pm_ops,
|
||||
},
|
||||
.probe = rcar_can_probe,
|
||||
.remove_new = rcar_can_remove,
|
||||
.remove = rcar_can_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(rcar_can_driver);
|
||||
|
@ -2118,7 +2118,7 @@ static struct platform_driver rcar_canfd_driver = {
|
||||
.pm = &rcar_canfd_pm_ops,
|
||||
},
|
||||
.probe = rcar_canfd_probe,
|
||||
.remove_new = rcar_canfd_remove,
|
||||
.remove = rcar_canfd_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(rcar_canfd_driver);
|
||||
|
@ -491,11 +491,9 @@ rkcanfd_handle_error_int_reg_ec(struct rkcanfd_priv *priv, struct can_frame *cf,
|
||||
else if (reg_ec & RKCANFD_REG_ERROR_CODE_TX_CRC)
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ;
|
||||
else if (reg_ec & RKCANFD_REG_ERROR_CODE_TX_ACK_EOF)
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_ACK;
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_ACK_DEL;
|
||||
else if (reg_ec & RKCANFD_REG_ERROR_CODE_TX_ACK)
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_ACK;
|
||||
else if (reg_ec & RKCANFD_REG_ERROR_CODE_TX_ACK_EOF)
|
||||
cf->data[3] = CAN_ERR_PROT_LOC_ACK_DEL;
|
||||
/* RKCANFD_REG_ERROR_CODE_TX_ERROR */
|
||||
else if (reg_ec & RKCANFD_REG_ERROR_CODE_TX_OVERLOAD)
|
||||
cf->data[2] |= CAN_ERR_PROT_OVERLOAD;
|
||||
|
@ -71,8 +71,8 @@ void rkcanfd_timestamp_init(struct rkcanfd_priv *priv)
|
||||
|
||||
max_cycles = div_u64(ULLONG_MAX, cc->mult);
|
||||
max_cycles = min(max_cycles, cc->mask);
|
||||
work_delay_ns = div_u64(clocksource_cyc2ns(max_cycles, cc->mult, cc->shift), 3);
|
||||
priv->work_delay_jiffies = nsecs_to_jiffies(work_delay_ns);
|
||||
work_delay_ns = clocksource_cyc2ns(max_cycles, cc->mult, cc->shift);
|
||||
priv->work_delay_jiffies = div_u64(work_delay_ns, 3u * NSEC_PER_SEC / HZ);
|
||||
INIT_DELAYED_WORK(&priv->timestamp, rkcanfd_timestamp_work);
|
||||
|
||||
netdev_dbg(priv->ndev, "clock=%lu.%02luMHz bitrate=%lu.%02luMBit/s div=%u rate=%lu.%02luMHz mult=%u shift=%u delay=%lus\n",
|
||||
|
@ -245,7 +245,7 @@ static void sja1000_isa_remove(struct platform_device *pdev)
|
||||
|
||||
static struct platform_driver sja1000_isa_driver = {
|
||||
.probe = sja1000_isa_probe,
|
||||
.remove_new = sja1000_isa_remove,
|
||||
.remove = sja1000_isa_remove,
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
},
|
||||
|
@ -329,7 +329,7 @@ static void sp_remove(struct platform_device *pdev)
|
||||
|
||||
static struct platform_driver sp_driver = {
|
||||
.probe = sp_probe,
|
||||
.remove_new = sp_remove,
|
||||
.remove = sp_remove,
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
.of_match_table = sp_of_table,
|
||||
|
@ -854,7 +854,7 @@ static struct platform_driver softing_driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
},
|
||||
.probe = softing_pdev_probe,
|
||||
.remove_new = softing_pdev_remove,
|
||||
.remove = softing_pdev_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(softing_driver);
|
||||
|
@ -914,7 +914,7 @@ static struct platform_driver sun4i_can_driver = {
|
||||
.of_match_table = sun4ican_of_match,
|
||||
},
|
||||
.probe = sun4ican_probe,
|
||||
.remove_new = sun4ican_remove,
|
||||
.remove = sun4ican_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(sun4i_can_driver);
|
||||
|
@ -1025,7 +1025,7 @@ static struct platform_driver ti_hecc_driver = {
|
||||
.of_match_table = ti_hecc_dt_ids,
|
||||
},
|
||||
.probe = ti_hecc_probe,
|
||||
.remove_new = ti_hecc_remove,
|
||||
.remove = ti_hecc_remove,
|
||||
.suspend = ti_hecc_suspend,
|
||||
.resume = ti_hecc_resume,
|
||||
};
|
||||
|
@ -17,11 +17,12 @@ config CAN_EMS_USB
|
||||
config CAN_ESD_USB
|
||||
tristate "esd electronics gmbh CAN/USB interfaces"
|
||||
help
|
||||
This driver adds supports for several CAN/USB interfaces
|
||||
This driver adds support for several CAN/USB interfaces
|
||||
from esd electronics gmbh (https://www.esd.eu).
|
||||
|
||||
The drivers supports the following devices:
|
||||
- esd CAN-USB/2
|
||||
- esd CAN-USB/3-FD
|
||||
- esd CAN-USB/Micro
|
||||
|
||||
To compile this driver as a module, choose M here: the module
|
||||
|
@ -2103,7 +2103,7 @@ static void xcan_remove(struct platform_device *pdev)
|
||||
|
||||
static struct platform_driver xcan_driver = {
|
||||
.probe = xcan_probe,
|
||||
.remove_new = xcan_remove,
|
||||
.remove = xcan_remove,
|
||||
.driver = {
|
||||
.name = DRIVER_NAME,
|
||||
.pm = &xcan_dev_pm_ops,
|
||||
|
Loading…
Reference in New Issue
Block a user