Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net/can/mscan: replace hardcoded values with defines

Not all hardcoded values have been replaced as this made the code quite
unreadable. IMHO this compromise serves the purpose of readability.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Wolfram Sang and committed by
David S. Miller
74ff60b2 81593c1c

+15 -5
+10 -5
drivers/net/can/mscan/mscan.c
··· 211 211 212 212 rtr = frame->can_id & CAN_RTR_FLAG; 213 213 214 + /* RTR is always the lowest bit of interest, then IDs follow */ 214 215 if (frame->can_id & CAN_EFF_FLAG) { 215 - can_id = (frame->can_id & CAN_EFF_MASK) << 1; 216 + can_id = (frame->can_id & CAN_EFF_MASK) 217 + << (MSCAN_EFF_RTR_SHIFT + 1); 216 218 if (rtr) 217 - can_id |= 1; 219 + can_id |= 1 << MSCAN_EFF_RTR_SHIFT; 218 220 out_be16(&regs->tx.idr3_2, can_id); 219 221 220 222 can_id >>= 16; 221 - can_id = (can_id & 0x7) | ((can_id << 2) & 0xffe0) | (3 << 3); 223 + /* EFF_FLAGS are inbetween the IDs :( */ 224 + can_id = (can_id & 0x7) | ((can_id << 2) & 0xffe0) 225 + | MSCAN_EFF_FLAGS; 222 226 } else { 223 - can_id = (frame->can_id & CAN_SFF_MASK) << 5; 227 + can_id = (frame->can_id & CAN_SFF_MASK) 228 + << (MSCAN_SFF_RTR_SHIFT + 1); 224 229 if (rtr) 225 - can_id |= 1 << 4; 230 + can_id |= 1 << MSCAN_SFF_RTR_SHIFT; 226 231 } 227 232 out_be16(&regs->tx.idr1_0, can_id); 228 233
+5
drivers/net/can/mscan/mscan.h
··· 131 131 /* MSCAN Miscellaneous Register (CANMISC) bits */ 132 132 #define MSCAN_BOHOLD 0x01 133 133 134 + /* MSCAN Identifier Register (IDR) bits */ 135 + #define MSCAN_SFF_RTR_SHIFT 4 136 + #define MSCAN_EFF_RTR_SHIFT 0 137 + #define MSCAN_EFF_FLAGS 0x18 /* IDE + SRR */ 138 + 134 139 #ifdef MSCAN_FOR_MPC5200 135 140 #define _MSCAN_RESERVED_(n, num) u8 _res##n[num] 136 141 #define _MSCAN_RESERVED_DSR_SIZE 2