}
 
 /*
- * candev callback used to set device bitrate.
+ * candev callback used to set device nominal/arbitration bitrate.
  */
 static int peak_usb_set_bittiming(struct net_device *netdev)
 {
        struct peak_usb_device *dev = netdev_priv(netdev);
-       struct can_bittiming *bt = &dev->can.bittiming;
+       const struct peak_usb_adapter *pa = dev->adapter;
 
-       if (dev->adapter->dev_set_bittiming) {
-               int err = dev->adapter->dev_set_bittiming(dev, bt);
+       if (pa->dev_set_bittiming) {
+               struct can_bittiming *bt = &dev->can.bittiming;
+               int err = pa->dev_set_bittiming(dev, bt);
 
                if (err)
                        netdev_info(netdev, "couldn't set bitrate (err %d)\n",
-                               err);
+                                   err);
+               return err;
+       }
+
+       return 0;
+}
+
+/*
+ * candev callback used to set device data bitrate.
+ */
+static int peak_usb_set_data_bittiming(struct net_device *netdev)
+{
+       struct peak_usb_device *dev = netdev_priv(netdev);
+       const struct peak_usb_adapter *pa = dev->adapter;
+
+       if (pa->dev_set_data_bittiming) {
+               struct can_bittiming *bt = &dev->can.data_bittiming;
+               int err = pa->dev_set_data_bittiming(dev, bt);
+
+               if (err)
+                       netdev_info(netdev,
+                                   "couldn't set data bitrate (err %d)\n",
+                                   err);
+
                return err;
        }
 
        dev->can.clock = peak_usb_adapter->clock;
        dev->can.bittiming_const = &peak_usb_adapter->bittiming_const;
        dev->can.do_set_bittiming = peak_usb_set_bittiming;
+       dev->can.data_bittiming_const = &peak_usb_adapter->data_bittiming_const;
+       dev->can.do_set_data_bittiming = peak_usb_set_data_bittiming;
        dev->can.do_set_mode = peak_usb_set_mode;
        dev->can.do_get_berr_counter = peak_usb_adapter->do_get_berr_counter;
        dev->can.ctrlmode_supported = peak_usb_adapter->ctrlmode_supported;
 
        u32 ctrlmode_supported;
        struct can_clock clock;
        const struct can_bittiming_const bittiming_const;
+       const struct can_bittiming_const data_bittiming_const;
        unsigned int ctrl_count;
 
        int (*intf_probe)(struct usb_interface *intf);
        int (*dev_close)(struct peak_usb_device *dev);
        int (*dev_set_bittiming)(struct peak_usb_device *dev,
                                        struct can_bittiming *bt);
+       int (*dev_set_data_bittiming)(struct peak_usb_device *dev,
+                                     struct can_bittiming *bt);
        int (*dev_set_bus)(struct peak_usb_device *dev, u8 onoff);
        int (*dev_get_device_id)(struct peak_usb_device *dev, u32 *device_id);
        int (*dev_decode_buf)(struct peak_usb_device *dev, struct urb *urb);