aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can
diff options
context:
space:
mode:
authorStephane Grosjean <s.grosjean@peak-system.com>2015-01-23 05:31:21 -0500
committerMarc Kleine-Budde <mkl@pengutronix.de>2015-01-28 08:47:05 -0500
commitb9f2cc1be77ef2bcf1470b69bfb015447cd3fa9a (patch)
treec9a0a2d9cee3ddcc385867da7720b10c11cc7e20 /drivers/net/can
parente3629f5657e653c413b2970a91e5f9ea123b36dc (diff)
can: peak_usb: upgrade core to data bittiming specs
Upgrade PEAK-System USB adapters core to the new data structures (names) and callbacks added for the support of the CANFD extension. This specific patch does the mandatory changes to support new data bittiming specs. Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can')
-rw-r--r--drivers/net/can/usb/peak_usb/pcan_usb_core.c36
-rw-r--r--drivers/net/can/usb/peak_usb/pcan_usb_core.h3
2 files changed, 34 insertions, 5 deletions
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
index 38634323ec51..10553ffc453f 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
@@ -678,19 +678,43 @@ static int peak_usb_set_mode(struct net_device *netdev, enum can_mode mode)
678} 678}
679 679
680/* 680/*
681 * candev callback used to set device bitrate. 681 * candev callback used to set device nominal/arbitration bitrate.
682 */ 682 */
683static int peak_usb_set_bittiming(struct net_device *netdev) 683static int peak_usb_set_bittiming(struct net_device *netdev)
684{ 684{
685 struct peak_usb_device *dev = netdev_priv(netdev); 685 struct peak_usb_device *dev = netdev_priv(netdev);
686 struct can_bittiming *bt = &dev->can.bittiming; 686 const struct peak_usb_adapter *pa = dev->adapter;
687 687
688 if (dev->adapter->dev_set_bittiming) { 688 if (pa->dev_set_bittiming) {
689 int err = dev->adapter->dev_set_bittiming(dev, bt); 689 struct can_bittiming *bt = &dev->can.bittiming;
690 int err = pa->dev_set_bittiming(dev, bt);
690 691
691 if (err) 692 if (err)
692 netdev_info(netdev, "couldn't set bitrate (err %d)\n", 693 netdev_info(netdev, "couldn't set bitrate (err %d)\n",
693 err); 694 err);
695 return err;
696 }
697
698 return 0;
699}
700
701/*
702 * candev callback used to set device data bitrate.
703 */
704static int peak_usb_set_data_bittiming(struct net_device *netdev)
705{
706 struct peak_usb_device *dev = netdev_priv(netdev);
707 const struct peak_usb_adapter *pa = dev->adapter;
708
709 if (pa->dev_set_data_bittiming) {
710 struct can_bittiming *bt = &dev->can.data_bittiming;
711 int err = pa->dev_set_data_bittiming(dev, bt);
712
713 if (err)
714 netdev_info(netdev,
715 "couldn't set data bitrate (err %d)\n",
716 err);
717
694 return err; 718 return err;
695 } 719 }
696 720
@@ -749,6 +773,8 @@ static int peak_usb_create_dev(const struct peak_usb_adapter *peak_usb_adapter,
749 dev->can.clock = peak_usb_adapter->clock; 773 dev->can.clock = peak_usb_adapter->clock;
750 dev->can.bittiming_const = &peak_usb_adapter->bittiming_const; 774 dev->can.bittiming_const = &peak_usb_adapter->bittiming_const;
751 dev->can.do_set_bittiming = peak_usb_set_bittiming; 775 dev->can.do_set_bittiming = peak_usb_set_bittiming;
776 dev->can.data_bittiming_const = &peak_usb_adapter->data_bittiming_const;
777 dev->can.do_set_data_bittiming = peak_usb_set_data_bittiming;
752 dev->can.do_set_mode = peak_usb_set_mode; 778 dev->can.do_set_mode = peak_usb_set_mode;
753 dev->can.do_get_berr_counter = peak_usb_adapter->do_get_berr_counter; 779 dev->can.do_get_berr_counter = peak_usb_adapter->do_get_berr_counter;
754 dev->can.ctrlmode_supported = peak_usb_adapter->ctrlmode_supported; 780 dev->can.ctrlmode_supported = peak_usb_adapter->ctrlmode_supported;
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.h b/drivers/net/can/usb/peak_usb/pcan_usb_core.h
index 739a344427a2..c0e8dfaef526 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.h
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.h
@@ -47,6 +47,7 @@ struct peak_usb_adapter {
47 u32 ctrlmode_supported; 47 u32 ctrlmode_supported;
48 struct can_clock clock; 48 struct can_clock clock;
49 const struct can_bittiming_const bittiming_const; 49 const struct can_bittiming_const bittiming_const;
50 const struct can_bittiming_const data_bittiming_const;
50 unsigned int ctrl_count; 51 unsigned int ctrl_count;
51 52
52 int (*intf_probe)(struct usb_interface *intf); 53 int (*intf_probe)(struct usb_interface *intf);
@@ -58,6 +59,8 @@ struct peak_usb_adapter {
58 int (*dev_close)(struct peak_usb_device *dev); 59 int (*dev_close)(struct peak_usb_device *dev);
59 int (*dev_set_bittiming)(struct peak_usb_device *dev, 60 int (*dev_set_bittiming)(struct peak_usb_device *dev,
60 struct can_bittiming *bt); 61 struct can_bittiming *bt);
62 int (*dev_set_data_bittiming)(struct peak_usb_device *dev,
63 struct can_bittiming *bt);
61 int (*dev_set_bus)(struct peak_usb_device *dev, u8 onoff); 64 int (*dev_set_bus)(struct peak_usb_device *dev, u8 onoff);
62 int (*dev_get_device_id)(struct peak_usb_device *dev, u32 *device_id); 65 int (*dev_get_device_id)(struct peak_usb_device *dev, u32 *device_id);
63 int (*dev_decode_buf)(struct peak_usb_device *dev, struct urb *urb); 66 int (*dev_decode_buf)(struct peak_usb_device *dev, struct urb *urb);