aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-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);