[mkl-can-next:rockchip-canfd-downstream 8/32] drivers/net/can/rockchip/rockchip_can.c:683:34: error: array type has incomplete element type 'struct of_device_id'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git rockchip-canfd-downstream
head:   57a1d7b3fcdc3ccf99336327347d54ad630a4485
commit: ffed8877bb0efe42f7a0c9022c414d32f97843b3 [8/32] can: rockchip_can: remove obsolete CAN LED support
config: arm-allmodconfig (https://download.01.org/0day-ci/archive/20240905/202409051940.fGUe59lb-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240905/202409051940.fGUe59lb-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409051940.fGUe59lb-lkp@xxxxxxxxx/

All error/warnings (new ones prefixed by >>):

   drivers/net/can/rockchip/rockchip_can.c: In function 'rockchip_can_start_xmit':
   drivers/net/can/rockchip/rockchip_can.c:312:9: error: too few arguments to function 'can_put_echo_skb'
     312 |         can_put_echo_skb(skb, ndev, 0);
         |         ^~~~~~~~~~~~~~~~
   In file included from include/linux/can/dev.h:22,
                    from drivers/net/can/rockchip/rockchip_can.c:10:
   include/linux/can/skb.h:20:5: note: declared here
      20 | int can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
         |     ^~~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c: In function 'rockchip_can_rx':
   drivers/net/can/rockchip/rockchip_can.c:337:23: error: implicit declaration of function 'get_can_dlc' [-Wimplicit-function-declaration]
     337 |         cf->can_dlc = get_can_dlc(fi & CAN_DLC_MASK);
         |                       ^~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c: In function 'rockchip_can_interrupt':
   drivers/net/can/rockchip/rockchip_can.c:513:17: error: too few arguments to function 'can_get_echo_skb'
     513 |                 can_get_echo_skb(ndev, 0);
         |                 ^~~~~~~~~~~~~~~~
   include/linux/can/skb.h:25:27: note: declared here
      25 | unsigned int __must_check can_get_echo_skb(struct net_device *dev,
         |                           ^~~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c: At top level:
>> drivers/net/can/rockchip/rockchip_can.c:683:34: error: array type has incomplete element type 'struct of_device_id'
     683 | static const struct of_device_id rockchip_can_of_match[] = {
         |                                  ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:689:38: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
     689 | static int rockchip_can_probe(struct platform_device *pdev)
         |                                      ^~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c: In function 'rockchip_can_probe':
>> drivers/net/can/rockchip/rockchip_can.c:697:15: error: implicit declaration of function 'platform_get_irq' [-Wimplicit-function-declaration]
     697 |         irq = platform_get_irq(pdev, 0);
         |               ^~~~~~~~~~~~~~~~
   In file included from include/linux/device.h:15,
                    from include/linux/dma-mapping.h:8,
                    from include/linux/skbuff.h:28,
                    from include/net/net_namespace.h:43,
                    from include/linux/netdevice.h:38,
                    from include/linux/can/bittiming.h:9,
                    from include/linux/can/dev.h:18:
>> drivers/net/can/rockchip/rockchip_can.c:699:30: error: invalid use of undefined type 'struct platform_device'
     699 |                 dev_err(&pdev->dev, "could not get a valid irq\n");
         |                              ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:699:17: note: in expansion of macro 'dev_err'
     699 |                 dev_err(&pdev->dev, "could not get a valid irq\n");
         |                 ^~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:703:15: error: implicit declaration of function 'platform_get_resource' [-Wimplicit-function-declaration]
     703 |         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
         |               ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:703:13: error: assignment to 'struct resource *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     703 |         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
         |             ^
   drivers/net/can/rockchip/rockchip_can.c:704:43: error: invalid use of undefined type 'struct platform_device'
     704 |         addr = devm_ioremap_resource(&pdev->dev, res);
         |                                           ^~
   drivers/net/can/rockchip/rockchip_can.c:710:30: error: invalid use of undefined type 'struct platform_device'
     710 |                 dev_err(&pdev->dev, "could not allocate memory for CAN device\n");
         |                              ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:710:17: note: in expansion of macro 'dev_err'
     710 |                 dev_err(&pdev->dev, "could not allocate memory for CAN device\n");
         |                 ^~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:721:37: error: invalid use of undefined type 'struct platform_device'
     721 |         err = devm_request_irq(&pdev->dev, ndev->irq, rockchip_can_interrupt,
         |                                     ^~
   drivers/net/can/rockchip/rockchip_can.c:724:30: error: invalid use of undefined type 'struct platform_device'
     724 |                 dev_err(&pdev->dev, "request_irq err: %d\n", err);
         |                              ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:724:17: note: in expansion of macro 'dev_err'
     724 |                 dev_err(&pdev->dev, "request_irq err: %d\n", err);
         |                 ^~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:728:57: error: invalid use of undefined type 'struct platform_device'
     728 |         rcan->reset = devm_reset_control_array_get(&pdev->dev, false, false);
         |                                                         ^~
   drivers/net/can/rockchip/rockchip_can.c:731:38: error: invalid use of undefined type 'struct platform_device'
     731 |                         dev_err(&pdev->dev, "failed to get rcan reset lines\n");
         |                                      ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:731:25: note: in expansion of macro 'dev_err'
     731 |                         dev_err(&pdev->dev, "failed to get rcan reset lines\n");
         |                         ^~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:735:53: error: invalid use of undefined type 'struct platform_device'
     735 |         rcan->num_clks = devm_clk_bulk_get_all(&pdev->dev, &rcan->clks);
         |                                                     ^~
   drivers/net/can/rockchip/rockchip_can.c:737:30: error: invalid use of undefined type 'struct platform_device'
     737 |                 dev_err(&pdev->dev, "bus clock not found\n");
         |                              ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:737:17: note: in expansion of macro 'dev_err'
     737 |                 dev_err(&pdev->dev, "bus clock not found\n");
         |                 ^~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:741:26: error: invalid use of undefined type 'struct platform_device'
     741 |         rcan->dev = &pdev->dev;
         |                          ^~
>> drivers/net/can/rockchip/rockchip_can.c:751:9: error: implicit declaration of function 'platform_set_drvdata' [-Wimplicit-function-declaration]
     751 |         platform_set_drvdata(pdev, ndev);
         |         ^~~~~~~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:752:35: error: invalid use of undefined type 'struct platform_device'
     752 |         SET_NETDEV_DEV(ndev, &pdev->dev);
         |                                   ^~
   include/linux/netdevice.h:2609:63: note: in definition of macro 'SET_NETDEV_DEV'
    2609 | #define SET_NETDEV_DEV(net, pdev)       ((net)->dev.parent = (pdev))
         |                                                               ^~~~
   drivers/net/can/rockchip/rockchip_can.c:754:32: error: invalid use of undefined type 'struct platform_device'
     754 |         pm_runtime_enable(&pdev->dev);
         |                                ^~
   drivers/net/can/rockchip/rockchip_can.c:755:40: error: invalid use of undefined type 'struct platform_device'
     755 |         err = pm_runtime_get_sync(&pdev->dev);
         |                                        ^~
   drivers/net/can/rockchip/rockchip_can.c:757:30: error: invalid use of undefined type 'struct platform_device'
     757 |                 dev_err(&pdev->dev, "%s: pm_runtime_get failed(%d)\n",
         |                              ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:757:17: note: in expansion of macro 'dev_err'
     757 |                 dev_err(&pdev->dev, "%s: pm_runtime_get failed(%d)\n",
         |                 ^~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:764:30: error: invalid use of undefined type 'struct platform_device'
     764 |                 dev_err(&pdev->dev, "registering %s failed (err=%d)\n",
         |                              ^~
   include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                         ^~~
   drivers/net/can/rockchip/rockchip_can.c:764:17: note: in expansion of macro 'dev_err'
     764 |                 dev_err(&pdev->dev, "registering %s failed (err=%d)\n",
         |                 ^~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:769:29: error: invalid use of undefined type 'struct platform_device'
     769 |         pm_runtime_put(&pdev->dev);
         |                             ^~
   drivers/net/can/rockchip/rockchip_can.c:774:29: error: invalid use of undefined type 'struct platform_device'
     774 |         pm_runtime_put(&pdev->dev);
         |                             ^~
   drivers/net/can/rockchip/rockchip_can.c:776:33: error: invalid use of undefined type 'struct platform_device'
     776 |         pm_runtime_disable(&pdev->dev);
         |                                 ^~
   drivers/net/can/rockchip/rockchip_can.c: At top level:
   drivers/net/can/rockchip/rockchip_can.c:782:39: warning: 'struct platform_device' declared inside parameter list will not be visible outside of this definition or declaration
     782 | static int rockchip_can_remove(struct platform_device *pdev)
         |                                       ^~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c: In function 'rockchip_can_remove':
>> drivers/net/can/rockchip/rockchip_can.c:784:35: error: implicit declaration of function 'platform_get_drvdata' [-Wimplicit-function-declaration]
     784 |         struct net_device *ndev = platform_get_drvdata(pdev);
         |                                   ^~~~~~~~~~~~~~~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:784:35: error: initialization of 'struct net_device *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
   drivers/net/can/rockchip/rockchip_can.c:787:33: error: invalid use of undefined type 'struct platform_device'
     787 |         pm_runtime_disable(&pdev->dev);
         |                                 ^~
   drivers/net/can/rockchip/rockchip_can.c: At top level:
>> drivers/net/can/rockchip/rockchip_can.c:793:15: error: variable 'rockchip_can_driver' has initializer but incomplete type
     793 | static struct platform_driver rockchip_can_driver = {
         |               ^~~~~~~~~~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:794:10: error: 'struct platform_driver' has no member named 'driver'
     794 |         .driver = {
         |          ^~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:794:19: error: extra brace group at end of initializer
     794 |         .driver = {
         |                   ^
   drivers/net/can/rockchip/rockchip_can.c:794:19: note: (near initialization for 'rockchip_can_driver')
>> drivers/net/can/rockchip/rockchip_can.c:794:19: warning: excess elements in struct initializer
   drivers/net/can/rockchip/rockchip_can.c:794:19: note: (near initialization for 'rockchip_can_driver')
>> drivers/net/can/rockchip/rockchip_can.c:799:10: error: 'struct platform_driver' has no member named 'probe'
     799 |         .probe = rockchip_can_probe,
         |          ^~~~~
   drivers/net/can/rockchip/rockchip_can.c:799:18: warning: excess elements in struct initializer
     799 |         .probe = rockchip_can_probe,
         |                  ^~~~~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:799:18: note: (near initialization for 'rockchip_can_driver')
>> drivers/net/can/rockchip/rockchip_can.c:800:10: error: 'struct platform_driver' has no member named 'remove'
     800 |         .remove = rockchip_can_remove,
         |          ^~~~~~
   drivers/net/can/rockchip/rockchip_can.c:800:19: warning: excess elements in struct initializer
     800 |         .remove = rockchip_can_remove,
         |                   ^~~~~~~~~~~~~~~~~~~
   drivers/net/can/rockchip/rockchip_can.c:800:19: note: (near initialization for 'rockchip_can_driver')
>> drivers/net/can/rockchip/rockchip_can.c:802:1: warning: data definition has no type or storage class
     802 | module_platform_driver(rockchip_can_driver);
         | ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:802:1: error: type defaults to 'int' in declaration of 'module_platform_driver' [-Wimplicit-int]
>> drivers/net/can/rockchip/rockchip_can.c:802:1: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type]
>> drivers/net/can/rockchip/rockchip_can.c:793:31: error: storage size of 'rockchip_can_driver' isn't known
     793 | static struct platform_driver rockchip_can_driver = {
         |                               ^~~~~~~~~~~~~~~~~~~
>> drivers/net/can/rockchip/rockchip_can.c:793:31: warning: 'rockchip_can_driver' defined but not used [-Wunused-variable]


vim +683 drivers/net/can/rockchip/rockchip_can.c

31119b56075179 Andy Yan 2019-03-25  682  
31119b56075179 Andy Yan 2019-03-25 @683  static const struct of_device_id rockchip_can_of_match[] = {
31119b56075179 Andy Yan 2019-03-25  684  	{.compatible = "rockchip,can-1.0"},
31119b56075179 Andy Yan 2019-03-25  685  	{},
31119b56075179 Andy Yan 2019-03-25  686  };
31119b56075179 Andy Yan 2019-03-25  687  MODULE_DEVICE_TABLE(of, rockchip_can_of_match);
31119b56075179 Andy Yan 2019-03-25  688  
31119b56075179 Andy Yan 2019-03-25 @689  static int rockchip_can_probe(struct platform_device *pdev)
31119b56075179 Andy Yan 2019-03-25  690  {
31119b56075179 Andy Yan 2019-03-25  691  	struct net_device *ndev;
31119b56075179 Andy Yan 2019-03-25  692  	struct rockchip_can *rcan;
31119b56075179 Andy Yan 2019-03-25  693  	struct resource *res;
31119b56075179 Andy Yan 2019-03-25  694  	void __iomem *addr;
31119b56075179 Andy Yan 2019-03-25  695  	int err, irq;
31119b56075179 Andy Yan 2019-03-25  696  
31119b56075179 Andy Yan 2019-03-25 @697  	irq = platform_get_irq(pdev, 0);
31119b56075179 Andy Yan 2019-03-25  698  	if (irq < 0) {
31119b56075179 Andy Yan 2019-03-25 @699  		dev_err(&pdev->dev, "could not get a valid irq\n");
31119b56075179 Andy Yan 2019-03-25  700  		return -ENODEV;
31119b56075179 Andy Yan 2019-03-25  701  	}
31119b56075179 Andy Yan 2019-03-25  702  
31119b56075179 Andy Yan 2019-03-25 @703  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
31119b56075179 Andy Yan 2019-03-25  704  	addr = devm_ioremap_resource(&pdev->dev, res);
31119b56075179 Andy Yan 2019-03-25  705  	if (IS_ERR(addr))
31119b56075179 Andy Yan 2019-03-25  706  		return -EBUSY;
31119b56075179 Andy Yan 2019-03-25  707  
31119b56075179 Andy Yan 2019-03-25  708  	ndev = alloc_candev(sizeof(struct rockchip_can), 1);
31119b56075179 Andy Yan 2019-03-25  709  	if (!ndev) {
31119b56075179 Andy Yan 2019-03-25  710  		dev_err(&pdev->dev, "could not allocate memory for CAN device\n");
31119b56075179 Andy Yan 2019-03-25  711  		return -ENOMEM;
31119b56075179 Andy Yan 2019-03-25  712  	}
31119b56075179 Andy Yan 2019-03-25  713  
31119b56075179 Andy Yan 2019-03-25  714  	ndev->netdev_ops = &rockchip_can_netdev_ops;
31119b56075179 Andy Yan 2019-03-25  715  	ndev->irq = irq;
31119b56075179 Andy Yan 2019-03-25  716  	ndev->flags |= IFF_ECHO;
31119b56075179 Andy Yan 2019-03-25  717  
31119b56075179 Andy Yan 2019-03-25  718  	rcan = netdev_priv(ndev);
31119b56075179 Andy Yan 2019-03-25  719  
31119b56075179 Andy Yan 2019-03-25  720  	/* register interrupt handler */
31119b56075179 Andy Yan 2019-03-25  721  	err = devm_request_irq(&pdev->dev, ndev->irq, rockchip_can_interrupt,
31119b56075179 Andy Yan 2019-03-25  722  			       0, ndev->name, ndev);
31119b56075179 Andy Yan 2019-03-25  723  	if (err) {
31119b56075179 Andy Yan 2019-03-25  724  		dev_err(&pdev->dev, "request_irq err: %d\n", err);
31119b56075179 Andy Yan 2019-03-25  725  		return err;
31119b56075179 Andy Yan 2019-03-25  726  	}
31119b56075179 Andy Yan 2019-03-25  727  
31119b56075179 Andy Yan 2019-03-25  728  	rcan->reset = devm_reset_control_array_get(&pdev->dev, false, false);
31119b56075179 Andy Yan 2019-03-25  729  	if (IS_ERR(rcan->reset)) {
31119b56075179 Andy Yan 2019-03-25  730  		if (PTR_ERR(rcan->reset) != -EPROBE_DEFER)
31119b56075179 Andy Yan 2019-03-25  731  			dev_err(&pdev->dev, "failed to get rcan reset lines\n");
31119b56075179 Andy Yan 2019-03-25  732  		return PTR_ERR(rcan->reset);
31119b56075179 Andy Yan 2019-03-25  733  	}
31119b56075179 Andy Yan 2019-03-25  734  
31119b56075179 Andy Yan 2019-03-25  735  	rcan->num_clks = devm_clk_bulk_get_all(&pdev->dev, &rcan->clks);
31119b56075179 Andy Yan 2019-03-25  736  	if (rcan->num_clks < 1) {
31119b56075179 Andy Yan 2019-03-25  737  		dev_err(&pdev->dev, "bus clock not found\n");
31119b56075179 Andy Yan 2019-03-25  738  		return -ENODEV;
31119b56075179 Andy Yan 2019-03-25  739  	}
31119b56075179 Andy Yan 2019-03-25  740  
31119b56075179 Andy Yan 2019-03-25  741  	rcan->dev = &pdev->dev;
31119b56075179 Andy Yan 2019-03-25  742  	rcan->can.clock.freq = clk_get_rate(rcan->clks[0].clk);
31119b56075179 Andy Yan 2019-03-25  743  	rcan->can.bittiming_const = &rockchip_can_bittiming_const;
31119b56075179 Andy Yan 2019-03-25  744  	rcan->can.do_set_mode = rockchip_can_set_mode;
31119b56075179 Andy Yan 2019-03-25  745  	rcan->can.do_get_berr_counter = rockchip_can_get_berr_counter;
31119b56075179 Andy Yan 2019-03-25  746  	rcan->can.ctrlmode_supported = CAN_CTRLMODE_BERR_REPORTING |
31119b56075179 Andy Yan 2019-03-25  747  				       CAN_CTRLMODE_LISTENONLY |
31119b56075179 Andy Yan 2019-03-25  748  				       CAN_CTRLMODE_LOOPBACK |
31119b56075179 Andy Yan 2019-03-25  749  				       CAN_CTRLMODE_3_SAMPLES;
31119b56075179 Andy Yan 2019-03-25  750  	rcan->base = addr;
31119b56075179 Andy Yan 2019-03-25 @751  	platform_set_drvdata(pdev, ndev);
31119b56075179 Andy Yan 2019-03-25  752  	SET_NETDEV_DEV(ndev, &pdev->dev);
31119b56075179 Andy Yan 2019-03-25  753  
31119b56075179 Andy Yan 2019-03-25  754  	pm_runtime_enable(&pdev->dev);
31119b56075179 Andy Yan 2019-03-25  755  	err = pm_runtime_get_sync(&pdev->dev);
31119b56075179 Andy Yan 2019-03-25  756  	if (err < 0) {
31119b56075179 Andy Yan 2019-03-25  757  		dev_err(&pdev->dev, "%s: pm_runtime_get failed(%d)\n",
31119b56075179 Andy Yan 2019-03-25  758  			__func__, err);
31119b56075179 Andy Yan 2019-03-25  759  		goto err_pmdisable;
31119b56075179 Andy Yan 2019-03-25  760  	}
31119b56075179 Andy Yan 2019-03-25  761  
31119b56075179 Andy Yan 2019-03-25  762  	err = register_candev(ndev);
31119b56075179 Andy Yan 2019-03-25  763  	if (err) {
31119b56075179 Andy Yan 2019-03-25  764  		dev_err(&pdev->dev, "registering %s failed (err=%d)\n",
31119b56075179 Andy Yan 2019-03-25  765  			DRV_NAME, err);
31119b56075179 Andy Yan 2019-03-25  766  		goto err_disableclks;
31119b56075179 Andy Yan 2019-03-25  767  	}
31119b56075179 Andy Yan 2019-03-25  768  
31119b56075179 Andy Yan 2019-03-25  769  	pm_runtime_put(&pdev->dev);
31119b56075179 Andy Yan 2019-03-25  770  
31119b56075179 Andy Yan 2019-03-25  771  	return 0;
31119b56075179 Andy Yan 2019-03-25  772  
31119b56075179 Andy Yan 2019-03-25  773  err_disableclks:
31119b56075179 Andy Yan 2019-03-25  774  	pm_runtime_put(&pdev->dev);
31119b56075179 Andy Yan 2019-03-25  775  err_pmdisable:
31119b56075179 Andy Yan 2019-03-25  776  	pm_runtime_disable(&pdev->dev);
31119b56075179 Andy Yan 2019-03-25  777  	free_candev(ndev);
31119b56075179 Andy Yan 2019-03-25  778  
31119b56075179 Andy Yan 2019-03-25  779  	return err;
31119b56075179 Andy Yan 2019-03-25  780  }
31119b56075179 Andy Yan 2019-03-25  781  
31119b56075179 Andy Yan 2019-03-25  782  static int rockchip_can_remove(struct platform_device *pdev)
31119b56075179 Andy Yan 2019-03-25  783  {
31119b56075179 Andy Yan 2019-03-25 @784  	struct net_device *ndev = platform_get_drvdata(pdev);
31119b56075179 Andy Yan 2019-03-25  785  
31119b56075179 Andy Yan 2019-03-25  786  	unregister_netdev(ndev);
31119b56075179 Andy Yan 2019-03-25  787  	pm_runtime_disable(&pdev->dev);
31119b56075179 Andy Yan 2019-03-25  788  	free_candev(ndev);
31119b56075179 Andy Yan 2019-03-25  789  
31119b56075179 Andy Yan 2019-03-25  790  	return 0;
31119b56075179 Andy Yan 2019-03-25  791  }
31119b56075179 Andy Yan 2019-03-25  792  
31119b56075179 Andy Yan 2019-03-25 @793  static struct platform_driver rockchip_can_driver = {
31119b56075179 Andy Yan 2019-03-25 @794  	.driver = {
31119b56075179 Andy Yan 2019-03-25  795  		.name = DRV_NAME,
31119b56075179 Andy Yan 2019-03-25  796  		.pm = &rockchip_can_dev_pm_ops,
31119b56075179 Andy Yan 2019-03-25  797  		.of_match_table = rockchip_can_of_match,
31119b56075179 Andy Yan 2019-03-25  798  	},
31119b56075179 Andy Yan 2019-03-25 @799  	.probe = rockchip_can_probe,
31119b56075179 Andy Yan 2019-03-25 @800  	.remove = rockchip_can_remove,
31119b56075179 Andy Yan 2019-03-25  801  };
31119b56075179 Andy Yan 2019-03-25 @802  module_platform_driver(rockchip_can_driver);
31119b56075179 Andy Yan 2019-03-25  803  

:::::: The code at line 683 was first introduced by commit
:::::: 31119b560751797c63452b1badad825d6830ac28 can: rockchip_can: add rockchip CAN driver

:::::: TO: Andy Yan <andy.yan@xxxxxxxxxxxxxx>
:::::: CC: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux