Skip to content

Commit 34d2631

Browse files
author
Paolo Abeni
committed
Merge tag 'linux-can-next-for-6.16-20250522' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next
Marc Kleine-Budde says: ==================== pull-request: can-next 2025-05-22 this is a pull request of 22 patches for net-next/main. The series by Biju Das contains 19 patches and adds RZ/G3E CANFD support to the rcar_canfd driver. The patch by Vincent Mailhol adds a struct data_bittiming_params to group FD parameters as a preparation patch for CAN-XL support. Felix Maurer's patch imports tst-filter from can-tests into the kernel self tests and Vincent Mailhol adds support for physical CAN interfaces. linux-can-next-for-6.16-20250522 * tag 'linux-can-next-for-6.16-20250522' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next: (22 commits) selftests: can: test_raw_filter.sh: add support of physical interfaces selftests: can: Import tst-filter from can-tests can: dev: add struct data_bittiming_params to group FD parameters can: rcar_canfd: Add RZ/G3E support can: rcar_canfd: Enhance multi_channel_irqs handling can: rcar_canfd: Add external_clk variable to struct rcar_canfd_hw_info can: rcar_canfd: Add sh variable to struct rcar_canfd_hw_info can: rcar_canfd: Add struct rcanfd_regs variable to struct rcar_canfd_hw_info can: rcar_canfd: Add shared_can_regs variable to struct rcar_canfd_hw_info can: rcar_canfd: Add ch_interface_mode variable to struct rcar_canfd_hw_info can: rcar_canfd: Add {nom,data}_bittiming variables to struct rcar_canfd_hw_info can: rcar_canfd: Add max_cftml variable to struct rcar_canfd_hw_info can: rcar_canfd: Add max_aflpn variable to struct rcar_canfd_hw_info can: rcar_canfd: Add rnc_field_width variable to struct rcar_canfd_hw_info can: rcar_canfd: Update RCANFD_GAFLCFG macro can: rcar_canfd: Add rcar_canfd_setrnc() can: rcar_canfd: Drop the mask operation in RCANFD_GAFLCFG_SETRNC macro can: rcar_canfd: Update RCANFD_GERFL_ERR macro can: rcar_canfd: Drop RCANFD_GAFLCFG_GETRNC macro can: rcar_canfd: Use of_get_available_child_by_name() ... ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
2 parents 0a9b2c9 + 3e20585 commit 34d2631

File tree

28 files changed

+922
-221
lines changed

28 files changed

+922
-221
lines changed

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

Lines changed: 128 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,80 @@ properties:
4242
- renesas,r9a07g054-canfd # RZ/V2L
4343
- const: renesas,rzg2l-canfd # RZ/G2L family
4444

45+
- const: renesas,r9a09g047-canfd # RZ/G3E
46+
4547
reg:
4648
maxItems: 1
4749

48-
interrupts: true
50+
interrupts:
51+
oneOf:
52+
- items:
53+
- description: Channel interrupt
54+
- description: Global interrupt
55+
- items:
56+
- description: CAN global error interrupt
57+
- description: CAN receive FIFO interrupt
58+
- description: CAN0 error interrupt
59+
- description: CAN0 transmit interrupt
60+
- description: CAN0 transmit/receive FIFO receive completion interrupt
61+
- description: CAN1 error interrupt
62+
- description: CAN1 transmit interrupt
63+
- description: CAN1 transmit/receive FIFO receive completion interrupt
64+
- description: CAN2 error interrupt
65+
- description: CAN2 transmit interrupt
66+
- description: CAN2 transmit/receive FIFO receive completion interrupt
67+
- description: CAN3 error interrupt
68+
- description: CAN3 transmit interrupt
69+
- description: CAN3 transmit/receive FIFO receive completion interrupt
70+
- description: CAN4 error interrupt
71+
- description: CAN4 transmit interrupt
72+
- description: CAN4 transmit/receive FIFO receive completion interrupt
73+
- description: CAN5 error interrupt
74+
- description: CAN5 transmit interrupt
75+
- description: CAN5 transmit/receive FIFO receive completion interrupt
76+
minItems: 8
77+
78+
interrupt-names:
79+
oneOf:
80+
- items:
81+
- const: ch_int
82+
- const: g_int
83+
- items:
84+
- const: g_err
85+
- const: g_recc
86+
- const: ch0_err
87+
- const: ch0_rec
88+
- const: ch0_trx
89+
- const: ch1_err
90+
- const: ch1_rec
91+
- const: ch1_trx
92+
- const: ch2_err
93+
- const: ch2_rec
94+
- const: ch2_trx
95+
- const: ch3_err
96+
- const: ch3_rec
97+
- const: ch3_trx
98+
- const: ch4_err
99+
- const: ch4_rec
100+
- const: ch4_trx
101+
- const: ch5_err
102+
- const: ch5_rec
103+
- const: ch5_trx
104+
minItems: 8
49105

50106
clocks:
51107
maxItems: 3
52108

53109
clock-names:
54-
items:
55-
- const: fck
56-
- const: canfd
57-
- const: can_clk
110+
oneOf:
111+
- items:
112+
- const: fck
113+
- const: canfd
114+
- const: can_clk
115+
- items:
116+
- const: fck
117+
- const: ram_clk
118+
- const: can_clk
58119

59120
power-domains:
60121
maxItems: 1
@@ -117,52 +178,77 @@ allOf:
117178
then:
118179
properties:
119180
interrupts:
120-
items:
121-
- description: CAN global error interrupt
122-
- description: CAN receive FIFO interrupt
123-
- description: CAN0 error interrupt
124-
- description: CAN0 transmit interrupt
125-
- description: CAN0 transmit/receive FIFO receive completion interrupt
126-
- description: CAN1 error interrupt
127-
- description: CAN1 transmit interrupt
128-
- description: CAN1 transmit/receive FIFO receive completion interrupt
181+
maxItems: 8
129182

130183
interrupt-names:
131-
items:
132-
- const: g_err
133-
- const: g_recc
134-
- const: ch0_err
135-
- const: ch0_rec
136-
- const: ch0_trx
137-
- const: ch1_err
138-
- const: ch1_rec
139-
- const: ch1_trx
184+
maxItems: 8
140185

141186
resets:
187+
minItems: 2
142188
maxItems: 2
143189

144190
reset-names:
145-
items:
146-
- const: rstp_n
147-
- const: rstc_n
191+
minItems: 2
192+
maxItems: 2
148193

149194
required:
150195
- reset-names
151-
else:
196+
197+
- if:
198+
properties:
199+
compatible:
200+
contains:
201+
enum:
202+
- renesas,rcar-gen3-canfd
203+
- renesas,rcar-gen4-canfd
204+
then:
152205
properties:
153206
interrupts:
154-
items:
155-
- description: Channel interrupt
156-
- description: Global interrupt
207+
minItems: 2
208+
maxItems: 2
157209

158210
interrupt-names:
159-
items:
160-
- const: ch_int
161-
- const: g_int
211+
minItems: 2
212+
maxItems: 2
162213

163214
resets:
164215
maxItems: 1
165216

217+
- if:
218+
properties:
219+
compatible:
220+
contains:
221+
const: renesas,r9a09g047-canfd
222+
then:
223+
properties:
224+
interrupts:
225+
minItems: 20
226+
227+
interrupt-names:
228+
minItems: 20
229+
230+
resets:
231+
minItems: 2
232+
maxItems: 2
233+
234+
reset-names:
235+
minItems: 2
236+
maxItems: 2
237+
238+
required:
239+
- reset-names
240+
241+
- if:
242+
properties:
243+
compatible:
244+
contains:
245+
enum:
246+
- renesas,rcar-gen3-canfd
247+
- renesas,rzg2l-canfd
248+
then:
249+
patternProperties:
250+
"^channel[2-7]$": false
251+
166252
- if:
167253
properties:
168254
compatible:
@@ -171,16 +257,15 @@ allOf:
171257
then:
172258
patternProperties:
173259
"^channel[4-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
260+
261+
- if:
262+
properties:
263+
compatible:
264+
contains:
265+
const: renesas,r9a09g047-canfd
266+
then:
267+
patternProperties:
268+
"^channel[6-7]$": false
184269

185270
unevaluatedProperties: false
186271

MAINTAINERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5274,6 +5274,7 @@ F: include/uapi/linux/can/isotp.h
52745274
F: include/uapi/linux/can/raw.h
52755275
F: net/can/
52765276
F: net/sched/em_canid.c
5277+
F: tools/testing/selftests/net/can/
52775278

52785279
CAN-J1939 NETWORK LAYER
52795280
M: Robin van der Gracht <[email protected]>
@@ -17076,6 +17077,7 @@ X: net/ceph/
1707617077
X: net/mac80211/
1707717078
X: net/rfkill/
1707817079
X: net/wireless/
17080+
X: tools/testing/selftests/net/can/
1707917081

1708017082
NETWORKING [IPSEC]
1708117083
M: Steffen Klassert <[email protected]>

drivers/net/can/ctucanfd/ctucanfd_base.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ static int ctucan_set_bittiming(struct net_device *ndev)
275275
static int ctucan_set_data_bittiming(struct net_device *ndev)
276276
{
277277
struct ctucan_priv *priv = netdev_priv(ndev);
278-
struct can_bittiming *dbt = &priv->can.data_bittiming;
278+
struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
279279

280280
/* Note that dbt may be modified here */
281281
return ctucan_set_btr(ndev, dbt, false);
@@ -290,7 +290,7 @@ static int ctucan_set_data_bittiming(struct net_device *ndev)
290290
static int ctucan_set_secondary_sample_point(struct net_device *ndev)
291291
{
292292
struct ctucan_priv *priv = netdev_priv(ndev);
293-
struct can_bittiming *dbt = &priv->can.data_bittiming;
293+
struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
294294
int ssp_offset = 0;
295295
u32 ssp_cfg = 0; /* No SSP by default */
296296

@@ -1358,12 +1358,12 @@ int ctucan_probe_common(struct device *dev, void __iomem *addr, int irq, unsigne
13581358
priv->ntxbufs = ntxbufs;
13591359
priv->dev = dev;
13601360
priv->can.bittiming_const = &ctu_can_fd_bit_timing_max;
1361-
priv->can.data_bittiming_const = &ctu_can_fd_bit_timing_data_max;
1361+
priv->can.fd.data_bittiming_const = &ctu_can_fd_bit_timing_data_max;
13621362
priv->can.do_set_mode = ctucan_do_set_mode;
13631363

13641364
/* Needed for timing adjustment to be performed as soon as possible */
13651365
priv->can.do_set_bittiming = ctucan_set_bittiming;
1366-
priv->can.do_set_data_bittiming = ctucan_set_data_bittiming;
1366+
priv->can.fd.do_set_data_bittiming = ctucan_set_data_bittiming;
13671367

13681368
priv->can.do_get_berr_counter = ctucan_get_berr_counter;
13691369
priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK

drivers/net/can/dev/dev.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,8 @@ int open_candev(struct net_device *dev)
404404

405405
/* For CAN FD the data bitrate has to be >= the arbitration bitrate */
406406
if ((priv->ctrlmode & CAN_CTRLMODE_FD) &&
407-
(!priv->data_bittiming.bitrate ||
408-
priv->data_bittiming.bitrate < priv->bittiming.bitrate)) {
407+
(!priv->fd.data_bittiming.bitrate ||
408+
priv->fd.data_bittiming.bitrate < priv->bittiming.bitrate)) {
409409
netdev_err(dev, "incorrect/missing data bit-timing\n");
410410
return -EINVAL;
411411
}
@@ -543,16 +543,16 @@ int register_candev(struct net_device *dev)
543543
if (!priv->bitrate_const != !priv->bitrate_const_cnt)
544544
return -EINVAL;
545545

546-
if (!priv->data_bitrate_const != !priv->data_bitrate_const_cnt)
546+
if (!priv->fd.data_bitrate_const != !priv->fd.data_bitrate_const_cnt)
547547
return -EINVAL;
548548

549549
/* We only support either fixed bit rates or bit timing const. */
550-
if ((priv->bitrate_const || priv->data_bitrate_const) &&
551-
(priv->bittiming_const || priv->data_bittiming_const))
550+
if ((priv->bitrate_const || priv->fd.data_bitrate_const) &&
551+
(priv->bittiming_const || priv->fd.data_bittiming_const))
552552
return -EINVAL;
553553

554554
if (!can_bittiming_const_valid(priv->bittiming_const) ||
555-
!can_bittiming_const_valid(priv->data_bittiming_const))
555+
!can_bittiming_const_valid(priv->fd.data_bittiming_const))
556556
return -EINVAL;
557557

558558
if (!priv->termination_const) {

0 commit comments

Comments
 (0)