linux-can-next-for-6.5-20230515
-----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEEDs2BvajyNKlf9TJQvlAcSiqKBOgFAmRinB8THG1rbEBwZW5n dXRyb25peC5kZQAKCRC+UBxKKooE6HlfB/9o3WI8kCQfLBFRqC8LTqKfc9gZt0v+ 9b6PvPY0u6SLxV3TVeX+um6RJsoOEWay9Zv3nTJu1Skn4yBkg3dywPeSBn6Nw5EV 6sabMYE84qhrhub6paYry0LQ8QxC2w/tGEn2Or0UMQOpH3q1rt0U6rFlWL6//tO7 E39NUDqAgr1euhZoyQqbb6tNz005+VcX8REqGXG6N6r0kVq+FkZj+GQ2CoaBDRTq AeUXp2fp9Y2gCgtfPOtfmZ1b6PXwTCDMxzCD3kYrX9jPre8THwCmzZQBXvNpnKtI wh37tpgVr9xGE6ThV4lj0U0nPGfLMbwZoBpzGwzA0CQgCPP9t85ayHPo =Rw3S -----END PGP SIGNATURE----- Merge tag 'linux-can-next-for-6.5-20230515' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next Marc Kleine-Budde says: ==================== pull-request: can-next 2023-05-15 The 1st patch is by Ji-Ze Hong and adds support for the Fintek F81604 USB-CAN adapter. Jiapeng Chong's patch removes unnecessary dev_err() functions from the bxcan driver. The next patch is by me an makes a CAN internal header file self contained. The remaining 19 patches are by Uwe Kleine-König, they all convert the platform driver remove callback to return void. * tag 'linux-can-next-for-6.5-20230515' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next: (22 commits) can: xilinx: Convert to platform remove callback returning void can: ti_hecc: Convert to platform remove callback returning void can: sun4i_can: Convert to platform remove callback returning void can: softing: Convert to platform remove callback returning void can: sja1000_platform: Convert to platform remove callback returning void can: sja1000_isa: Convert to platform remove callback returning void can: rcar: Convert to platform remove callback returning void can: mscan: mpc5xxx_can: Convert to platform remove callback returning void can: m_can: Convert to platform remove callback returning void can: janz-ican3: Convert to platform remove callback returning void can: ifi_canfd: Convert to platform remove callback returning void can: grcan: Convert to platform remove callback returning void can: flexcan: Convert to platform remove callback returning void can: ctucanfd: Convert to platform remove callback returning void can: length: make header self contained can: cc770_platform: Convert to platform remove callback returning void can: bxcan: Remove unnecessary print function dev_err() can: cc770_isa: Convert to platform remove callback returning void can: usb: f81604: add Fintek F81604 support can: c_can: Convert to platform remove callback returning void ... ==================== Link: https://lore.kernel.org/r/20230515205759.1003118-1-mkl@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
833e24aeb4
@ -7966,6 +7966,12 @@ S: Maintained
|
||||
F: drivers/hwmon/f75375s.c
|
||||
F: include/linux/f75375s.h
|
||||
|
||||
FINTEK F81604 USB to 2xCANBUS DEVICE DRIVER
|
||||
M: Ji-Ze Hong (Peter Hong) <peter_hong@fintek.com.tw>
|
||||
L: linux-can@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/can/usb/f81604.c
|
||||
|
||||
FIREWIRE AUDIO DRIVERS and IEC 61883-1/6 PACKET STREAMING ENGINE
|
||||
M: Clemens Ladisch <clemens@ladisch.de>
|
||||
M: Takashi Sakamoto <o-takashi@sakamocchi.jp>
|
||||
|
@ -1346,7 +1346,7 @@ static int at91_can_probe(struct platform_device *pdev)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int at91_can_remove(struct platform_device *pdev)
|
||||
static void at91_can_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
struct at91_priv *priv = netdev_priv(dev);
|
||||
@ -1362,8 +1362,6 @@ static int at91_can_remove(struct platform_device *pdev)
|
||||
clk_put(priv->clk);
|
||||
|
||||
free_candev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct platform_device_id at91_can_id_table[] = {
|
||||
@ -1381,7 +1379,7 @@ MODULE_DEVICE_TABLE(platform, at91_can_id_table);
|
||||
|
||||
static struct platform_driver at91_can_driver = {
|
||||
.probe = at91_can_probe,
|
||||
.remove = at91_can_remove,
|
||||
.remove_new = at91_can_remove,
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.of_match_table = of_match_ptr(at91_can_dt_ids),
|
||||
|
@ -954,22 +954,16 @@ static int bxcan_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
rx_irq = platform_get_irq_byname(pdev, "rx0");
|
||||
if (rx_irq < 0) {
|
||||
dev_err(dev, "failed to get rx0 irq\n");
|
||||
if (rx_irq < 0)
|
||||
return rx_irq;
|
||||
}
|
||||
|
||||
tx_irq = platform_get_irq_byname(pdev, "tx");
|
||||
if (tx_irq < 0) {
|
||||
dev_err(dev, "failed to get tx irq\n");
|
||||
if (tx_irq < 0)
|
||||
return tx_irq;
|
||||
}
|
||||
|
||||
sce_irq = platform_get_irq_byname(pdev, "sce");
|
||||
if (sce_irq < 0) {
|
||||
dev_err(dev, "failed to get sce irq\n");
|
||||
if (sce_irq < 0)
|
||||
return sce_irq;
|
||||
}
|
||||
|
||||
ndev = alloc_candev(sizeof(struct bxcan_priv), BXCAN_TX_MB_NUM);
|
||||
if (!ndev) {
|
||||
@ -1027,7 +1021,7 @@ out_free_candev:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int bxcan_remove(struct platform_device *pdev)
|
||||
static void bxcan_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct bxcan_priv *priv = netdev_priv(ndev);
|
||||
@ -1036,7 +1030,6 @@ static int bxcan_remove(struct platform_device *pdev)
|
||||
clk_disable_unprepare(priv->clk);
|
||||
can_rx_offload_del(&priv->offload);
|
||||
free_candev(ndev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused bxcan_suspend(struct device *dev)
|
||||
@ -1088,7 +1081,7 @@ static struct platform_driver bxcan_driver = {
|
||||
.of_match_table = bxcan_of_match,
|
||||
},
|
||||
.probe = bxcan_probe,
|
||||
.remove = bxcan_remove,
|
||||
.remove_new = bxcan_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(bxcan_driver);
|
||||
|
@ -410,7 +410,7 @@ exit:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int c_can_plat_remove(struct platform_device *pdev)
|
||||
static void c_can_plat_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
struct c_can_priv *priv = netdev_priv(dev);
|
||||
@ -418,8 +418,6 @@ static int c_can_plat_remove(struct platform_device *pdev)
|
||||
unregister_c_can_dev(dev);
|
||||
pm_runtime_disable(priv->device);
|
||||
free_c_can_dev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
@ -487,7 +485,7 @@ static struct platform_driver c_can_plat_driver = {
|
||||
.of_match_table = c_can_of_table,
|
||||
},
|
||||
.probe = c_can_plat_probe,
|
||||
.remove = c_can_plat_remove,
|
||||
.remove_new = c_can_plat_remove,
|
||||
.suspend = c_can_suspend,
|
||||
.resume = c_can_resume,
|
||||
.id_table = c_can_id_table,
|
||||
|
@ -285,7 +285,7 @@ exit:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int cc770_isa_remove(struct platform_device *pdev)
|
||||
static void cc770_isa_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
struct cc770_priv *priv = netdev_priv(dev);
|
||||
@ -303,13 +303,11 @@ static int cc770_isa_remove(struct platform_device *pdev)
|
||||
release_region(port[idx], CC770_IOSIZE);
|
||||
}
|
||||
free_cc770dev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver cc770_isa_driver = {
|
||||
.probe = cc770_isa_probe,
|
||||
.remove = cc770_isa_remove,
|
||||
.remove_new = cc770_isa_remove,
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
},
|
||||
|
@ -230,7 +230,7 @@ exit_release_mem:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int cc770_platform_remove(struct platform_device *pdev)
|
||||
static void cc770_platform_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
struct cc770_priv *priv = netdev_priv(dev);
|
||||
@ -242,8 +242,6 @@ static int cc770_platform_remove(struct platform_device *pdev)
|
||||
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
release_mem_region(mem->start, resource_size(mem));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id cc770_platform_table[] = {
|
||||
@ -259,7 +257,7 @@ static struct platform_driver cc770_platform_driver = {
|
||||
.of_match_table = cc770_platform_table,
|
||||
},
|
||||
.probe = cc770_platform_probe,
|
||||
.remove = cc770_platform_remove,
|
||||
.remove_new = cc770_platform_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(cc770_platform_driver);
|
||||
|
@ -86,7 +86,7 @@ err:
|
||||
* This function frees all the resources allocated to the device.
|
||||
* Return: 0 always
|
||||
*/
|
||||
static int ctucan_platform_remove(struct platform_device *pdev)
|
||||
static void ctucan_platform_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct ctucan_priv *priv = netdev_priv(ndev);
|
||||
@ -97,8 +97,6 @@ static int ctucan_platform_remove(struct platform_device *pdev)
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
netif_napi_del(&priv->napi);
|
||||
free_candev(ndev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(ctucan_platform_pm_ops, ctucan_suspend, ctucan_resume);
|
||||
@ -113,7 +111,7 @@ MODULE_DEVICE_TABLE(of, ctucan_of_match);
|
||||
|
||||
static struct platform_driver ctucanfd_driver = {
|
||||
.probe = ctucan_platform_probe,
|
||||
.remove = ctucan_platform_remove,
|
||||
.remove_new = ctucan_platform_remove,
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
.pm = &ctucan_platform_pm_ops,
|
||||
|
@ -2218,7 +2218,7 @@ static int flexcan_probe(struct platform_device *pdev)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int flexcan_remove(struct platform_device *pdev)
|
||||
static void flexcan_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
|
||||
@ -2227,8 +2227,6 @@ static int flexcan_remove(struct platform_device *pdev)
|
||||
unregister_flexcandev(dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
free_candev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused flexcan_suspend(struct device *device)
|
||||
@ -2379,7 +2377,7 @@ static struct platform_driver flexcan_driver = {
|
||||
.of_match_table = flexcan_of_match,
|
||||
},
|
||||
.probe = flexcan_probe,
|
||||
.remove = flexcan_remove,
|
||||
.remove_new = flexcan_remove,
|
||||
.id_table = flexcan_id_table,
|
||||
};
|
||||
|
||||
|
@ -1696,7 +1696,7 @@ exit_error:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int grcan_remove(struct platform_device *ofdev)
|
||||
static void grcan_remove(struct platform_device *ofdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(ofdev);
|
||||
struct grcan_priv *priv = netdev_priv(dev);
|
||||
@ -1706,8 +1706,6 @@ static int grcan_remove(struct platform_device *ofdev)
|
||||
irq_dispose_mapping(dev->irq);
|
||||
netif_napi_del(&priv->napi);
|
||||
free_candev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id grcan_match[] = {
|
||||
@ -1726,7 +1724,7 @@ static struct platform_driver grcan_driver = {
|
||||
.of_match_table = grcan_match,
|
||||
},
|
||||
.probe = grcan_probe,
|
||||
.remove = grcan_remove,
|
||||
.remove_new = grcan_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(grcan_driver);
|
||||
|
@ -1013,15 +1013,13 @@ err_reg:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ifi_canfd_plat_remove(struct platform_device *pdev)
|
||||
static void ifi_canfd_plat_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
|
||||
unregister_candev(ndev);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
free_candev(ndev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id ifi_canfd_of_table[] = {
|
||||
@ -1036,7 +1034,7 @@ static struct platform_driver ifi_canfd_plat_driver = {
|
||||
.of_match_table = ifi_canfd_of_table,
|
||||
},
|
||||
.probe = ifi_canfd_plat_probe,
|
||||
.remove = ifi_canfd_plat_remove,
|
||||
.remove_new = ifi_canfd_plat_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(ifi_canfd_plat_driver);
|
||||
|
@ -2023,7 +2023,7 @@ out_return:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ican3_remove(struct platform_device *pdev)
|
||||
static void ican3_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct ican3_dev *mod = netdev_priv(ndev);
|
||||
@ -2042,8 +2042,6 @@ static int ican3_remove(struct platform_device *pdev)
|
||||
iounmap(mod->dpm);
|
||||
|
||||
free_candev(ndev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver ican3_driver = {
|
||||
@ -2051,7 +2049,7 @@ static struct platform_driver ican3_driver = {
|
||||
.name = DRV_NAME,
|
||||
},
|
||||
.probe = ican3_probe,
|
||||
.remove = ican3_remove,
|
||||
.remove_new = ican3_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(ican3_driver);
|
||||
|
@ -164,7 +164,7 @@ static __maybe_unused int m_can_resume(struct device *dev)
|
||||
return m_can_class_resume(dev);
|
||||
}
|
||||
|
||||
static int m_can_plat_remove(struct platform_device *pdev)
|
||||
static void m_can_plat_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct m_can_plat_priv *priv = platform_get_drvdata(pdev);
|
||||
struct m_can_classdev *mcan_class = &priv->cdev;
|
||||
@ -172,8 +172,6 @@ static int m_can_plat_remove(struct platform_device *pdev)
|
||||
m_can_class_unregister(mcan_class);
|
||||
|
||||
m_can_class_free_dev(mcan_class->net);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused m_can_runtime_suspend(struct device *dev)
|
||||
@ -223,7 +221,7 @@ static struct platform_driver m_can_plat_driver = {
|
||||
.pm = &m_can_pmops,
|
||||
},
|
||||
.probe = m_can_plat_probe,
|
||||
.remove = m_can_plat_remove,
|
||||
.remove_new = m_can_plat_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(m_can_plat_driver);
|
||||
|
@ -349,7 +349,7 @@ exit_unmap_mem:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int mpc5xxx_can_remove(struct platform_device *ofdev)
|
||||
static void mpc5xxx_can_remove(struct platform_device *ofdev)
|
||||
{
|
||||
const struct of_device_id *match;
|
||||
const struct mpc5xxx_can_data *data;
|
||||
@ -365,8 +365,6 @@ static int mpc5xxx_can_remove(struct platform_device *ofdev)
|
||||
iounmap(priv->reg_base);
|
||||
irq_dispose_mapping(dev->irq);
|
||||
free_candev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
@ -437,7 +435,7 @@ static struct platform_driver mpc5xxx_can_driver = {
|
||||
.of_match_table = mpc5xxx_can_table,
|
||||
},
|
||||
.probe = mpc5xxx_can_probe,
|
||||
.remove = mpc5xxx_can_remove,
|
||||
.remove_new = mpc5xxx_can_remove,
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = mpc5xxx_can_suspend,
|
||||
.resume = mpc5xxx_can_resume,
|
||||
|
@ -824,7 +824,7 @@ fail:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int rcar_can_remove(struct platform_device *pdev)
|
||||
static void rcar_can_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct rcar_can_priv *priv = netdev_priv(ndev);
|
||||
@ -832,7 +832,6 @@ static int rcar_can_remove(struct platform_device *pdev)
|
||||
unregister_candev(ndev);
|
||||
netif_napi_del(&priv->napi);
|
||||
free_candev(ndev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused rcar_can_suspend(struct device *dev)
|
||||
@ -908,7 +907,7 @@ static struct platform_driver rcar_can_driver = {
|
||||
.pm = &rcar_can_pm_ops,
|
||||
},
|
||||
.probe = rcar_can_probe,
|
||||
.remove = rcar_can_remove,
|
||||
.remove_new = rcar_can_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(rcar_can_driver);
|
||||
|
@ -2078,7 +2078,7 @@ fail_dev:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int rcar_canfd_remove(struct platform_device *pdev)
|
||||
static void rcar_canfd_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct rcar_canfd_global *gpriv = platform_get_drvdata(pdev);
|
||||
u32 ch;
|
||||
@ -2096,8 +2096,6 @@ static int rcar_canfd_remove(struct platform_device *pdev)
|
||||
clk_disable_unprepare(gpriv->clkp);
|
||||
reset_control_assert(gpriv->rstc1);
|
||||
reset_control_assert(gpriv->rstc2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused rcar_canfd_suspend(struct device *dev)
|
||||
@ -2130,7 +2128,7 @@ static struct platform_driver rcar_canfd_driver = {
|
||||
.pm = &rcar_canfd_pm_ops,
|
||||
},
|
||||
.probe = rcar_canfd_probe,
|
||||
.remove = rcar_canfd_remove,
|
||||
.remove_new = rcar_canfd_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(rcar_canfd_driver);
|
||||
|
@ -223,7 +223,7 @@ exit:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sja1000_isa_remove(struct platform_device *pdev)
|
||||
static void sja1000_isa_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
struct sja1000_priv *priv = netdev_priv(dev);
|
||||
@ -241,13 +241,11 @@ static int sja1000_isa_remove(struct platform_device *pdev)
|
||||
release_region(port[idx], SJA1000_IOSIZE);
|
||||
}
|
||||
free_sja1000dev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver sja1000_isa_driver = {
|
||||
.probe = sja1000_isa_probe,
|
||||
.remove = sja1000_isa_remove,
|
||||
.remove_new = sja1000_isa_remove,
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
},
|
||||
|
@ -317,19 +317,17 @@ static int sp_probe(struct platform_device *pdev)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sp_remove(struct platform_device *pdev)
|
||||
static void sp_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
|
||||
unregister_sja1000dev(dev);
|
||||
free_sja1000dev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver sp_driver = {
|
||||
.probe = sp_probe,
|
||||
.remove = sp_remove,
|
||||
.remove_new = sp_remove,
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
.of_match_table = sp_of_table,
|
||||
|
@ -729,7 +729,7 @@ static const struct attribute_group softing_pdev_group = {
|
||||
/*
|
||||
* platform driver
|
||||
*/
|
||||
static int softing_pdev_remove(struct platform_device *pdev)
|
||||
static void softing_pdev_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct softing *card = platform_get_drvdata(pdev);
|
||||
int j;
|
||||
@ -747,7 +747,6 @@ static int softing_pdev_remove(struct platform_device *pdev)
|
||||
|
||||
iounmap(card->dpram);
|
||||
kfree(card);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int softing_pdev_probe(struct platform_device *pdev)
|
||||
@ -855,7 +854,7 @@ static struct platform_driver softing_driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
},
|
||||
.probe = softing_pdev_probe,
|
||||
.remove = softing_pdev_remove,
|
||||
.remove_new = softing_pdev_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(softing_driver);
|
||||
|
@ -791,14 +791,12 @@ static const struct of_device_id sun4ican_of_match[] = {
|
||||
|
||||
MODULE_DEVICE_TABLE(of, sun4ican_of_match);
|
||||
|
||||
static int sun4ican_remove(struct platform_device *pdev)
|
||||
static void sun4ican_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *dev = platform_get_drvdata(pdev);
|
||||
|
||||
unregister_netdev(dev);
|
||||
free_candev(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sun4ican_probe(struct platform_device *pdev)
|
||||
@ -901,7 +899,7 @@ static struct platform_driver sun4i_can_driver = {
|
||||
.of_match_table = sun4ican_of_match,
|
||||
},
|
||||
.probe = sun4ican_probe,
|
||||
.remove = sun4ican_remove,
|
||||
.remove_new = sun4ican_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(sun4i_can_driver);
|
||||
|
@ -963,7 +963,7 @@ probe_exit_candev:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int ti_hecc_remove(struct platform_device *pdev)
|
||||
static void ti_hecc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
struct ti_hecc_priv *priv = netdev_priv(ndev);
|
||||
@ -973,8 +973,6 @@ static int ti_hecc_remove(struct platform_device *pdev)
|
||||
clk_put(priv->clk);
|
||||
can_rx_offload_del(&priv->offload);
|
||||
free_candev(ndev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
@ -1028,7 +1026,7 @@ static struct platform_driver ti_hecc_driver = {
|
||||
.of_match_table = ti_hecc_dt_ids,
|
||||
},
|
||||
.probe = ti_hecc_probe,
|
||||
.remove = ti_hecc_remove,
|
||||
.remove_new = ti_hecc_remove,
|
||||
.suspend = ti_hecc_suspend,
|
||||
.resume = ti_hecc_resume,
|
||||
};
|
||||
|
@ -38,6 +38,18 @@ config CAN_ETAS_ES58X
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called etas_es58x.
|
||||
|
||||
config CAN_F81604
|
||||
tristate "Fintek F81604 USB to 2CAN interface"
|
||||
help
|
||||
This driver supports the Fintek F81604 USB to 2CAN interface.
|
||||
The device can support CAN2.0A/B protocol and also support
|
||||
2 output pins to control external terminator (optional).
|
||||
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called f81604.
|
||||
|
||||
(see also https://www.fintek.com.tw).
|
||||
|
||||
config CAN_GS_USB
|
||||
tristate "Geschwister Schneider UG and candleLight compatible interfaces"
|
||||
help
|
||||
|
@ -7,6 +7,7 @@ obj-$(CONFIG_CAN_8DEV_USB) += usb_8dev.o
|
||||
obj-$(CONFIG_CAN_EMS_USB) += ems_usb.o
|
||||
obj-$(CONFIG_CAN_ESD_USB) += esd_usb.o
|
||||
obj-$(CONFIG_CAN_ETAS_ES58X) += etas_es58x/
|
||||
obj-$(CONFIG_CAN_F81604) += f81604.o
|
||||
obj-$(CONFIG_CAN_GS_USB) += gs_usb.o
|
||||
obj-$(CONFIG_CAN_KVASER_USB) += kvaser_usb/
|
||||
obj-$(CONFIG_CAN_MCBA_USB) += mcba_usb.o
|
||||
|
1201
drivers/net/can/usb/f81604.c
Normal file
1201
drivers/net/can/usb/f81604.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -1898,20 +1898,18 @@ err:
|
||||
* This function frees all the resources allocated to the device.
|
||||
* Return: 0 always
|
||||
*/
|
||||
static int xcan_remove(struct platform_device *pdev)
|
||||
static void xcan_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
|
||||
unregister_candev(ndev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
free_candev(ndev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver xcan_driver = {
|
||||
.probe = xcan_probe,
|
||||
.remove = xcan_remove,
|
||||
.remove_new = xcan_remove,
|
||||
.driver = {
|
||||
.name = DRIVER_NAME,
|
||||
.pm = &xcan_dev_pm_ops,
|
||||
|
@ -6,6 +6,9 @@
|
||||
#ifndef _CAN_LENGTH_H
|
||||
#define _CAN_LENGTH_H
|
||||
|
||||
#include <linux/can.h>
|
||||
#include <linux/can/netlink.h>
|
||||
|
||||
/*
|
||||
* Size of a Classical CAN Standard Frame
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user