FAILED: patch "[PATCH] can: flexcan: remove not needed struct flexcan_priv::tx_mb" failed to apply to 4.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
e05237f9da42ee52e73acea0bb082d788e111229Mon Sep 17 00:00:00 2001
From: Marc Kleine-Budde <[email protected]>
Date: Fri, 9 Nov 2018 15:01:50 +0100
Subject: [PATCH] can: flexcan: remove not needed struct flexcan_priv::tx_mb
and struct flexcan_priv::tx_mb_idx
The previous patch changes the TX path to always use the last mailbox regardless of the used offload scheme (rx-fifo or timestamp based). This means members "tx_mb" and "tx_mb_idx" of the struct flexcan_priv don't depend on the offload scheme, so replace them by compile time constants.
drivers/net/can/flexcan.c +12 -15
@@ -258,9 +258,7 @@ struct flexcan_priv {struct can_rx_offload offload;struct flexcan_regs __iomem *regs; -struct flexcan_mb __iomem *tx_mb;struct flexcan_mb __iomem *tx_mb_reserved; -u8 tx_mb_idx;u32 reg_ctrl_default;u32 reg_imask1_default;u32 reg_imask2_default;
@@ -514,6 +512,7 @@ static int flexcan_get_berr_counter(const struct net_device *dev,static netdev_tx_t flexcan_start_xmit (struct sk_buff *skb,struct net_device *dev) {const struct flexcan_priv *priv =netdev_priv (dev); +struct flexcan_regs __iomem *regs = priv->regs;struct can_frame *cf = (struct can_frame *)skb->data;u32 can_id;u32 data;
@@ -536,17 +535,17 @@ static netdev_tx_t flexcan_start_xmit(struct sk_buff *skb, struct net_device *deif (cf->can_dlc >0 ) { data =be32_to_cpup ((__be32 *)&cf->data[0 ]); - priv->write (data, &priv->tx_mb->data[0 ]); + priv->write (data, ®s->mb[FLEXCAN_TX_MB ].data[0 ]); }if (cf->can_dlc >4 ) { data =be32_to_cpup ((__be32 *)&cf->data[4 ]); - priv->write (data, &priv->tx_mb->data[1 ]); + priv->write (data, ®s->mb[FLEXCAN_TX_MB ].data[1 ]); }can_put_echo_skb (skb, dev,0 ); - priv->write (can_id, &priv->tx_mb->can_id); - priv->write (ctrl, &priv->tx_mb->can_ctrl); + priv->write (can_id, ®s->mb[FLEXCAN_TX_MB ].can_id); + priv->write (ctrl, ®s->mb[FLEXCAN_TX_MB ].can_ctrl);/* Errata ERR005829 step8: * Write twice INACTIVE(0x8) code to first MB.
@@ -737,7 +736,7 @@ static inline u64 flexcan_read_reg_iflag_rx(struct flexcan_priv *priv)u32 iflag1, iflag2; iflag2 = priv->read (®s->iflag2) & priv->reg_imask2_default & - ~FLEXCAN_IFLAG_MB (priv->tx_mb_idx); + ~FLEXCAN_IFLAG_MB (FLEXCAN_TX_MB ); iflag1 = priv->read (®s->iflag1) & priv->reg_imask1_default;return (u64 )iflag2 <<32 | iflag1;
@@ -787,7 +786,7 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id) reg_iflag2 = priv->read (®s->iflag2);/* transmission complete interrupt */ -if (reg_iflag2 &FLEXCAN_IFLAG_MB (priv->tx_mb_idx)) { +if (reg_iflag2 &FLEXCAN_IFLAG_MB (FLEXCAN_TX_MB )) { handled =IRQ_HANDLED ; stats->tx_bytes +=can_get_echo_skb (dev,0 ); stats->tx_packets++;
@@ -795,8 +794,8 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id)/* after sending a RTR frame MB is in RX mode */ priv->write (FLEXCAN_MB_CODE_TX_INACTIVE , - &priv->tx_mb->can_ctrl); - priv->write (FLEXCAN_IFLAG_MB (priv->tx_mb_idx), ®s->iflag2); + ®s->mb[FLEXCAN_TX_MB ].can_ctrl); + priv->write (FLEXCAN_IFLAG_MB (FLEXCAN_TX_MB ), ®s->iflag2);netif_wake_queue (dev); }
@@ -938,7 +937,7 @@ static int flexcan_chip_start(struct net_device *dev) reg_mcr &= ~FLEXCAN_MCR_MAXMB (0xff ); reg_mcr |=FLEXCAN_MCR_FRZ |FLEXCAN_MCR_HALT |FLEXCAN_MCR_SUPV |FLEXCAN_MCR_WRN_EN |FLEXCAN_MCR_SRX_DIS |FLEXCAN_MCR_IRMQ | -FLEXCAN_MCR_IDAM_C |FLEXCAN_MCR_MAXMB (priv->tx_mb_idx); +FLEXCAN_MCR_IDAM_C |FLEXCAN_MCR_MAXMB (FLEXCAN_TX_MB );if (priv->devtype_data->quirks &FLEXCAN_QUIRK_USE_OFF_TIMESTAMP ) reg_mcr &= ~FLEXCAN_MCR_FEN ;
@@ -1006,7 +1005,7 @@ static int flexcan_chip_start(struct net_device *dev)/* mark TX mailbox as INACTIVE */ priv->write (FLEXCAN_MB_CODE_TX_INACTIVE , - &priv->tx_mb->can_ctrl); + ®s->mb[FLEXCAN_TX_MB ].can_ctrl);/* acceptance mask/acceptance code (accept everything) */ priv->write (0x0 , ®s->rxgmask);
@@ -1365,11 +1364,9 @@ static int flexcan_probe(struct platform_device *pdev) priv->tx_mb_reserved = ®s->mb[FLEXCAN_TX_MB_RESERVED_OFF_TIMESTAMP ]; else priv->tx_mb_reserved = ®s->mb[FLEXCAN_TX_MB_RESERVED_OFF_FIFO]; - priv->tx_mb_idx =FLEXCAN_TX_MB ; - priv->tx_mb = ®s->mb[priv->tx_mb_idx]; priv->reg_imask1_default =0 ; - priv->reg_imask2_default =FLEXCAN_IFLAG_MB (priv->tx_mb_idx); + priv->reg_imask2_default =FLEXCAN_IFLAG_MB (FLEXCAN_TX_MB ); priv->offload.mailbox_read = flexcan_mailbox_read;