Skip to content

Commit da4f3b7

Browse files
committed
Merge tag 'linux-can-next-for-6.12-20240830' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next
Marc Kleine-Budde says: ==================== pull-request: can-next 2024-08-30 The first patch is by Duy Nguyen and document the R-Car V4M support in the rcar-canfd DT bindings. Frank Li's patch converts the microchip,mcp251x.txt DT bindings documentation to yaml. A patch by Zhang Changzhong update a comment in the j1939 CAN networking stack. Stefan Mätje's patch updates the CAN configuration netlink code, so that the bit timing calculation doesn't work on stale can_priv::ctrlmode data. Martin Jocic contributes a patch for the kvaser_pciefd driver to convert some ifdefs into if (IS_ENABLED()). The last patch is by Yan Zhen and simplifies the probe() function of the kvaser USB driver by using dev_err_probe(). * tag 'linux-can-next-for-6.12-20240830' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next: can: kvaser_usb: Simplify with dev_err_probe() can: kvaser_pciefd: Use IS_ENABLED() instead of #ifdef can: netlink: avoid call to do_set_data_bittiming callback with stale can_priv::ctrlmode can: j1939: use correct function name in comment dt-bindings: can: convert microchip,mcp251x.txt to yaml dt-bindings: can: renesas,rcar-canfd: Document R-Car V4M support ==================== Link: https://patch.msgid.link/20240830214406.1605786-1-mkl@pengutronix.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents 69cb899 + 0315c0b commit da4f3b7

File tree

7 files changed

+170
-130
lines changed

7 files changed

+170
-130
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/can/microchip,mcp2510.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Microchip MCP251X stand-alone CAN controller
8+
9+
maintainers:
10+
- Marc Kleine-Budde <mkl@pengutronix.de>
11+
12+
properties:
13+
compatible:
14+
enum:
15+
- microchip,mcp2510
16+
- microchip,mcp2515
17+
- microchip,mcp25625
18+
19+
reg:
20+
maxItems: 1
21+
22+
clocks:
23+
maxItems: 1
24+
25+
interrupts:
26+
maxItems: 1
27+
28+
vdd-supply:
29+
description: Regulator that powers the CAN controller.
30+
31+
xceiver-supply:
32+
description: Regulator that powers the CAN transceiver.
33+
34+
gpio-controller: true
35+
36+
"#gpio-cells":
37+
const: 2
38+
39+
required:
40+
- compatible
41+
- reg
42+
- clocks
43+
- interrupts
44+
45+
allOf:
46+
- $ref: /schemas/spi/spi-peripheral-props.yaml#
47+
48+
unevaluatedProperties: false
49+
50+
examples:
51+
- |
52+
#include <dt-bindings/interrupt-controller/irq.h>
53+
54+
spi {
55+
#address-cells = <1>;
56+
#size-cells = <0>;
57+
58+
can@1 {
59+
compatible = "microchip,mcp2515";
60+
reg = <1>;
61+
clocks = <&clk24m>;
62+
interrupt-parent = <&gpio4>;
63+
interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
64+
vdd-supply = <&reg5v0>;
65+
xceiver-supply = <&reg5v0>;
66+
gpio-controller;
67+
#gpio-cells = <2>;
68+
};
69+
};
70+

Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt

Lines changed: 0 additions & 30 deletions
This file was deleted.

Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ properties:
3232
- enum:
3333
- renesas,r8a779a0-canfd # R-Car V3U
3434
- renesas,r8a779g0-canfd # R-Car V4H
35+
- renesas,r8a779h0-canfd # R-Car V4M
3536
- const: renesas,rcar-gen4-canfd # R-Car Gen4
3637

3738
- items:
@@ -163,14 +164,23 @@ allOf:
163164
maxItems: 1
164165

165166
- if:
166-
not:
167-
properties:
168-
compatible:
169-
contains:
170-
const: renesas,rcar-gen4-canfd
167+
properties:
168+
compatible:
169+
contains:
170+
const: renesas,r8a779h0-canfd
171171
then:
172172
patternProperties:
173-
"^channel[2-7]$": false
173+
"^channel[5-7]$": false
174+
else:
175+
if:
176+
not:
177+
properties:
178+
compatible:
179+
contains:
180+
const: renesas,rcar-gen4-canfd
181+
then:
182+
patternProperties:
183+
"^channel[2-7]$": false
174184

175185
unevaluatedProperties: false
176186

drivers/net/can/dev/netlink.c

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,6 @@ static int can_validate(struct nlattr *tb[], struct nlattr *data[],
6565
if (!data)
6666
return 0;
6767

68-
if (data[IFLA_CAN_BITTIMING]) {
69-
struct can_bittiming bt;
70-
71-
memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
72-
err = can_validate_bittiming(&bt, extack);
73-
if (err)
74-
return err;
75-
}
76-
7768
if (data[IFLA_CAN_CTRLMODE]) {
7869
struct can_ctrlmode *cm = nla_data(data[IFLA_CAN_CTRLMODE]);
7970
u32 tdc_flags = cm->flags & CAN_CTRLMODE_TDC_MASK;
@@ -114,6 +105,15 @@ static int can_validate(struct nlattr *tb[], struct nlattr *data[],
114105
}
115106
}
116107

108+
if (data[IFLA_CAN_BITTIMING]) {
109+
struct can_bittiming bt;
110+
111+
memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
112+
err = can_validate_bittiming(&bt, extack);
113+
if (err)
114+
return err;
115+
}
116+
117117
if (is_can_fd) {
118118
if (!data[IFLA_CAN_BITTIMING] || !data[IFLA_CAN_DATA_BITTIMING])
119119
return -EOPNOTSUPP;
@@ -195,48 +195,6 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
195195
/* We need synchronization with dev->stop() */
196196
ASSERT_RTNL();
197197

198-
if (data[IFLA_CAN_BITTIMING]) {
199-
struct can_bittiming bt;
200-
201-
/* Do not allow changing bittiming while running */
202-
if (dev->flags & IFF_UP)
203-
return -EBUSY;
204-
205-
/* Calculate bittiming parameters based on
206-
* bittiming_const if set, otherwise pass bitrate
207-
* directly via do_set_bitrate(). Bail out if neither
208-
* is given.
209-
*/
210-
if (!priv->bittiming_const && !priv->do_set_bittiming &&
211-
!priv->bitrate_const)
212-
return -EOPNOTSUPP;
213-
214-
memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
215-
err = can_get_bittiming(dev, &bt,
216-
priv->bittiming_const,
217-
priv->bitrate_const,
218-
priv->bitrate_const_cnt,
219-
extack);
220-
if (err)
221-
return err;
222-
223-
if (priv->bitrate_max && bt.bitrate > priv->bitrate_max) {
224-
NL_SET_ERR_MSG_FMT(extack,
225-
"arbitration bitrate %u bps surpasses transceiver capabilities of %u bps",
226-
bt.bitrate, priv->bitrate_max);
227-
return -EINVAL;
228-
}
229-
230-
memcpy(&priv->bittiming, &bt, sizeof(bt));
231-
232-
if (priv->do_set_bittiming) {
233-
/* Finally, set the bit-timing registers */
234-
err = priv->do_set_bittiming(dev);
235-
if (err)
236-
return err;
237-
}
238-
}
239-
240198
if (data[IFLA_CAN_CTRLMODE]) {
241199
struct can_ctrlmode *cm;
242200
u32 ctrlstatic;
@@ -284,6 +242,48 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
284242
priv->ctrlmode &= cm->flags | ~CAN_CTRLMODE_TDC_MASK;
285243
}
286244

245+
if (data[IFLA_CAN_BITTIMING]) {
246+
struct can_bittiming bt;
247+
248+
/* Do not allow changing bittiming while running */
249+
if (dev->flags & IFF_UP)
250+
return -EBUSY;
251+
252+
/* Calculate bittiming parameters based on
253+
* bittiming_const if set, otherwise pass bitrate
254+
* directly via do_set_bitrate(). Bail out if neither
255+
* is given.
256+
*/
257+
if (!priv->bittiming_const && !priv->do_set_bittiming &&
258+
!priv->bitrate_const)
259+
return -EOPNOTSUPP;
260+
261+
memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
262+
err = can_get_bittiming(dev, &bt,
263+
priv->bittiming_const,
264+
priv->bitrate_const,
265+
priv->bitrate_const_cnt,
266+
extack);
267+
if (err)
268+
return err;
269+
270+
if (priv->bitrate_max && bt.bitrate > priv->bitrate_max) {
271+
NL_SET_ERR_MSG_FMT(extack,
272+
"arbitration bitrate %u bps surpasses transceiver capabilities of %u bps",
273+
bt.bitrate, priv->bitrate_max);
274+
return -EINVAL;
275+
}
276+
277+
memcpy(&priv->bittiming, &bt, sizeof(bt));
278+
279+
if (priv->do_set_bittiming) {
280+
/* Finally, set the bit-timing registers */
281+
err = priv->do_set_bittiming(dev);
282+
if (err)
283+
return err;
284+
}
285+
}
286+
287287
if (data[IFLA_CAN_RESTART_MS]) {
288288
/* Do not allow changing restart delay while running */
289289
if (dev->flags & IFF_UP)

drivers/net/can/kvaser_pciefd.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,13 +1053,13 @@ static void kvaser_pciefd_write_dma_map_altera(struct kvaser_pciefd *pcie,
10531053
void __iomem *serdes_base;
10541054
u32 word1, word2;
10551055

1056-
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
1057-
word1 = addr | KVASER_PCIEFD_ALTERA_DMA_64BIT;
1058-
word2 = addr >> 32;
1059-
#else
1060-
word1 = addr;
1061-
word2 = 0;
1062-
#endif
1056+
if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT)) {
1057+
word1 = lower_32_bits(addr) | KVASER_PCIEFD_ALTERA_DMA_64BIT;
1058+
word2 = upper_32_bits(addr);
1059+
} else {
1060+
word1 = addr;
1061+
word2 = 0;
1062+
}
10631063
serdes_base = KVASER_PCIEFD_SERDES_ADDR(pcie) + 0x8 * index;
10641064
iowrite32(word1, serdes_base);
10651065
iowrite32(word2, serdes_base + 0x4);
@@ -1072,9 +1072,9 @@ static void kvaser_pciefd_write_dma_map_sf2(struct kvaser_pciefd *pcie,
10721072
u32 lsb = addr & KVASER_PCIEFD_SF2_DMA_LSB_MASK;
10731073
u32 msb = 0x0;
10741074

1075-
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
1076-
msb = addr >> 32;
1077-
#endif
1075+
if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT))
1076+
msb = upper_32_bits(addr);
1077+
10781078
serdes_base = KVASER_PCIEFD_SERDES_ADDR(pcie) + 0x10 * index;
10791079
iowrite32(lsb, serdes_base);
10801080
iowrite32(msb, serdes_base + 0x4);
@@ -1087,9 +1087,9 @@ static void kvaser_pciefd_write_dma_map_xilinx(struct kvaser_pciefd *pcie,
10871087
u32 lsb = addr & KVASER_PCIEFD_XILINX_DMA_LSB_MASK;
10881088
u32 msb = 0x0;
10891089

1090-
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
1091-
msb = addr >> 32;
1092-
#endif
1090+
if (IS_ENABLED(CONFIG_ARCH_DMA_ADDR_T_64BIT))
1091+
msb = upper_32_bits(addr);
1092+
10931093
serdes_base = KVASER_PCIEFD_SERDES_ADDR(pcie) + 0x8 * index;
10941094
iowrite32(msb, serdes_base);
10951095
iowrite32(lsb, serdes_base + 0x4);

drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -898,10 +898,8 @@ static int kvaser_usb_probe(struct usb_interface *intf,
898898
ops = driver_info->ops;
899899

900900
err = ops->dev_setup_endpoints(dev);
901-
if (err) {
902-
dev_err(&intf->dev, "Cannot get usb endpoint(s)");
903-
return err;
904-
}
901+
if (err)
902+
return dev_err_probe(&intf->dev, err, "Cannot get usb endpoint(s)");
905903

906904
dev->udev = interface_to_usbdev(intf);
907905

@@ -912,26 +910,20 @@ static int kvaser_usb_probe(struct usb_interface *intf,
912910
dev->card_data.ctrlmode_supported = 0;
913911
dev->card_data.capabilities = 0;
914912
err = ops->dev_init_card(dev);
915-
if (err) {
916-
dev_err(&intf->dev,
917-
"Failed to initialize card, error %d\n", err);
918-
return err;
919-
}
913+
if (err)
914+
return dev_err_probe(&intf->dev, err,
915+
"Failed to initialize card\n");
920916

921917
err = ops->dev_get_software_info(dev);
922-
if (err) {
923-
dev_err(&intf->dev,
924-
"Cannot get software info, error %d\n", err);
925-
return err;
926-
}
918+
if (err)
919+
return dev_err_probe(&intf->dev, err,
920+
"Cannot get software info\n");
927921

928922
if (ops->dev_get_software_details) {
929923
err = ops->dev_get_software_details(dev);
930-
if (err) {
931-
dev_err(&intf->dev,
932-
"Cannot get software details, error %d\n", err);
933-
return err;
934-
}
924+
if (err)
925+
return dev_err_probe(&intf->dev, err,
926+
"Cannot get software details\n");
935927
}
936928

937929
if (WARN_ON(!dev->cfg))
@@ -945,18 +937,16 @@ static int kvaser_usb_probe(struct usb_interface *intf,
945937
dev_dbg(&intf->dev, "Max outstanding tx = %d URBs\n", dev->max_tx_urbs);
946938

947939
err = ops->dev_get_card_info(dev);
948-
if (err) {
949-
dev_err(&intf->dev, "Cannot get card info, error %d\n", err);
950-
return err;
951-
}
940+
if (err)
941+
return dev_err_probe(&intf->dev, err,
942+
"Cannot get card info\n");
952943

953944
if (ops->dev_get_capabilities) {
954945
err = ops->dev_get_capabilities(dev);
955946
if (err) {
956-
dev_err(&intf->dev,
957-
"Cannot get capabilities, error %d\n", err);
958947
kvaser_usb_remove_interfaces(dev);
959-
return err;
948+
return dev_err_probe(&intf->dev, err,
949+
"Cannot get capabilities\n");
960950
}
961951
}
962952

0 commit comments

Comments
 (0)