diff options
| -rw-r--r-- | drivers/net/can/c_can/c_can.c | 28 | ||||
| -rw-r--r-- | drivers/net/can/c_can/c_can.h | 28 |
2 files changed, 29 insertions, 27 deletions
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c index 8ea1379a398b..1e75223d614f 100644 --- a/drivers/net/can/c_can/c_can.c +++ b/drivers/net/can/c_can/c_can.c | |||
| @@ -145,33 +145,6 @@ | |||
| 145 | #define IF_RX 0 | 145 | #define IF_RX 0 |
| 146 | #define IF_TX 1 | 146 | #define IF_TX 1 |
| 147 | 147 | ||
| 148 | /* | ||
| 149 | * IFx register masks: | ||
| 150 | * allow easy operation on 16-bit registers when the | ||
| 151 | * argument is 32-bit instead | ||
| 152 | */ | ||
| 153 | #define IFX_WRITE_LOW_16BIT(x) ((x) & 0xFFFF) | ||
| 154 | #define IFX_WRITE_HIGH_16BIT(x) (((x) & 0xFFFF0000) >> 16) | ||
| 155 | |||
| 156 | /* message object split */ | ||
| 157 | #define C_CAN_NO_OF_OBJECTS 32 | ||
| 158 | #define C_CAN_MSG_OBJ_RX_NUM 16 | ||
| 159 | #define C_CAN_MSG_OBJ_TX_NUM 16 | ||
| 160 | |||
| 161 | #define C_CAN_MSG_OBJ_RX_FIRST 1 | ||
| 162 | #define C_CAN_MSG_OBJ_RX_LAST (C_CAN_MSG_OBJ_RX_FIRST + \ | ||
| 163 | C_CAN_MSG_OBJ_RX_NUM - 1) | ||
| 164 | |||
| 165 | #define C_CAN_MSG_OBJ_TX_FIRST (C_CAN_MSG_OBJ_RX_LAST + 1) | ||
| 166 | #define C_CAN_MSG_OBJ_TX_LAST (C_CAN_MSG_OBJ_TX_FIRST + \ | ||
| 167 | C_CAN_MSG_OBJ_TX_NUM - 1) | ||
| 168 | |||
| 169 | #define C_CAN_MSG_OBJ_RX_SPLIT 9 | ||
| 170 | #define C_CAN_MSG_RX_LOW_LAST (C_CAN_MSG_OBJ_RX_SPLIT - 1) | ||
| 171 | |||
| 172 | #define C_CAN_NEXT_MSG_OBJ_MASK (C_CAN_MSG_OBJ_TX_NUM - 1) | ||
| 173 | #define RECEIVE_OBJECT_BITS 0x0000ffff | ||
| 174 | |||
| 175 | /* status interrupt */ | 148 | /* status interrupt */ |
| 176 | #define STATUS_INTERRUPT 0x8000 | 149 | #define STATUS_INTERRUPT 0x8000 |
| 177 | 150 | ||
| @@ -537,6 +510,7 @@ static netdev_tx_t c_can_start_xmit(struct sk_buff *skb, | |||
| 537 | 510 | ||
| 538 | /* prepare message object for transmission */ | 511 | /* prepare message object for transmission */ |
| 539 | c_can_write_msg_object(dev, IF_TX, frame, msg_obj_no); | 512 | c_can_write_msg_object(dev, IF_TX, frame, msg_obj_no); |
| 513 | priv->dlc[msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST] = frame->can_dlc; | ||
| 540 | can_put_echo_skb(skb, dev, msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST); | 514 | can_put_echo_skb(skb, dev, msg_obj_no - C_CAN_MSG_OBJ_TX_FIRST); |
| 541 | 515 | ||
| 542 | /* | 516 | /* |
diff --git a/drivers/net/can/c_can/c_can.h b/drivers/net/can/c_can/c_can.h index 5097c802a61e..faa8404162b3 100644 --- a/drivers/net/can/c_can/c_can.h +++ b/drivers/net/can/c_can/c_can.h | |||
| @@ -22,6 +22,33 @@ | |||
| 22 | #ifndef C_CAN_H | 22 | #ifndef C_CAN_H |
| 23 | #define C_CAN_H | 23 | #define C_CAN_H |
| 24 | 24 | ||
| 25 | /* | ||
| 26 | * IFx register masks: | ||
| 27 | * allow easy operation on 16-bit registers when the | ||
| 28 | * argument is 32-bit instead | ||
| 29 | */ | ||
| 30 | #define IFX_WRITE_LOW_16BIT(x) ((x) & 0xFFFF) | ||
| 31 | #define IFX_WRITE_HIGH_16BIT(x) (((x) & 0xFFFF0000) >> 16) | ||
| 32 | |||
| 33 | /* message object split */ | ||
| 34 | #define C_CAN_NO_OF_OBJECTS 32 | ||
| 35 | #define C_CAN_MSG_OBJ_RX_NUM 16 | ||
| 36 | #define C_CAN_MSG_OBJ_TX_NUM 16 | ||
| 37 | |||
| 38 | #define C_CAN_MSG_OBJ_RX_FIRST 1 | ||
| 39 | #define C_CAN_MSG_OBJ_RX_LAST (C_CAN_MSG_OBJ_RX_FIRST + \ | ||
| 40 | C_CAN_MSG_OBJ_RX_NUM - 1) | ||
| 41 | |||
| 42 | #define C_CAN_MSG_OBJ_TX_FIRST (C_CAN_MSG_OBJ_RX_LAST + 1) | ||
| 43 | #define C_CAN_MSG_OBJ_TX_LAST (C_CAN_MSG_OBJ_TX_FIRST + \ | ||
| 44 | C_CAN_MSG_OBJ_TX_NUM - 1) | ||
| 45 | |||
| 46 | #define C_CAN_MSG_OBJ_RX_SPLIT 9 | ||
| 47 | #define C_CAN_MSG_RX_LOW_LAST (C_CAN_MSG_OBJ_RX_SPLIT - 1) | ||
| 48 | |||
| 49 | #define C_CAN_NEXT_MSG_OBJ_MASK (C_CAN_MSG_OBJ_TX_NUM - 1) | ||
| 50 | #define RECEIVE_OBJECT_BITS 0x0000ffff | ||
| 51 | |||
| 25 | enum reg { | 52 | enum reg { |
| 26 | C_CAN_CTRL_REG = 0, | 53 | C_CAN_CTRL_REG = 0, |
| 27 | C_CAN_CTRL_EX_REG, | 54 | C_CAN_CTRL_EX_REG, |
| @@ -173,6 +200,7 @@ struct c_can_priv { | |||
| 173 | u32 __iomem *raminit_ctrlreg; | 200 | u32 __iomem *raminit_ctrlreg; |
| 174 | unsigned int instance; | 201 | unsigned int instance; |
| 175 | void (*raminit) (const struct c_can_priv *priv, bool enable); | 202 | void (*raminit) (const struct c_can_priv *priv, bool enable); |
| 203 | u32 dlc[C_CAN_MSG_OBJ_TX_NUM]; | ||
| 176 | }; | 204 | }; |
| 177 | 205 | ||
| 178 | struct net_device *alloc_c_can_dev(void); | 206 | struct net_device *alloc_c_can_dev(void); |
