8 #include <linux/device.h>
11 #include <linux/module.h>
12 #include <linux/sched.h>
17 #define IMPR_SPEED_MASK 0xc0000000
18 #define IMPR_SPEED_SHIFT 30
19 #define IMPR_XSPEED_MASK 0x00000060
20 #define IMPR_XSPEED_SHIFT 5
21 #define IMPR_PLUGS_MASK 0x0000001f
23 #define IPCR_ONLINE 0x80000000
24 #define IPCR_BCAST_CONN 0x40000000
25 #define IPCR_P2P_CONN_MASK 0x3f000000
26 #define IPCR_P2P_CONN_SHIFT 24
27 #define IPCR_CHANNEL_MASK 0x003f0000
28 #define IPCR_CHANNEL_SHIFT 16
41 dev_err(&c->resources.unit->device,
"%cPCR%u: %pV",
42 'i', c->pcr_index, &(
struct va_format){ fmt, &va });
60 buffer[1] = modify(c, buffer[0]);
69 if (buffer[0] == old_arg)
73 err =
check(c, buffer[0]);
79 else if (rcode_is_permanent_error(rcode) || ++errors >= 3)
103 unsigned int ipcr_index)
163 cmp_error(c,
"plug is already in use\n");
167 cmp_error(c,
"plug is not on-line\n");
186 unsigned int max_payload_bytes)
194 fw_parent_device(c->
resources.unit)->max_speed);
198 retry_after_bus_reset:
200 max_payload_bytes, c->
speed);
204 err = pcr_modify(c, ipcr_set_modify, ipcr_set_check,
208 goto retry_after_bus_reset;
253 err = pcr_modify(c, ipcr_set_modify, ipcr_set_check,
299 cmp_error(c,
"plug is still connected\n");