This is a note to let you know that I've just added the patch titled can: flexcan: factor out transceiver {en,dis}able into seperate functions to the 3.13-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: can-flexcan-factor-out-transceiver-en-dis-able-into-seperate-functions.patch and it can be found in the queue-3.13 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From f003698e23f6f56a791774f14d0ac35d04872490 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> Date: Fri, 28 Feb 2014 17:18:27 +0100 Subject: can: flexcan: factor out transceiver {en,dis}able into seperate functions From: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> commit f003698e23f6f56a791774f14d0ac35d04872490 upstream. This patch moves the transceiver enable and disable into seperate functions, where the NULL pointer check is hidden. Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/net/can/flexcan.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c @@ -261,6 +261,22 @@ static inline void flexcan_write(u32 val } #endif +static inline int flexcan_transceiver_enable(const struct flexcan_priv *priv) +{ + if (!priv->reg_xceiver) + return 0; + + return regulator_enable(priv->reg_xceiver); +} + +static inline int flexcan_transceiver_disable(const struct flexcan_priv *priv) +{ + if (!priv->reg_xceiver) + return 0; + + return regulator_disable(priv->reg_xceiver); +} + static inline int flexcan_has_and_handle_berr(const struct flexcan_priv *priv, u32 reg_esr) { @@ -805,11 +821,9 @@ static int flexcan_chip_start(struct net if (priv->devtype_data->features & FLEXCAN_HAS_V10_FEATURES) flexcan_write(0x0, ®s->rxfgmask); - if (priv->reg_xceiver) { - err = regulator_enable(priv->reg_xceiver); - if (err) - goto out; - } + err = flexcan_transceiver_enable(priv); + if (err) + goto out; /* synchronize with the can bus */ reg_mcr = flexcan_read(®s->mcr); @@ -854,8 +868,7 @@ static void flexcan_chip_stop(struct net flexcan_write(priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_ALL, ®s->ctrl); - if (priv->reg_xceiver) - regulator_disable(priv->reg_xceiver); + flexcan_transceiver_disable(priv); priv->can.state = CAN_STATE_STOPPED; return; Patches currently in stable-queue which might be from mkl@xxxxxxxxxxxxxx are queue-3.13/can-flexcan-fix-transition-from-and-to-low-power-mode-in-chip_-en-dis-able.patch queue-3.13/can-flexcan-fix-shutdown-first-disable-chip-then-all-interrupts.patch queue-3.13/can-flexcan-flexcan_remove-add-missing-netif_napi_del.patch queue-3.13/can-flexcan-factor-out-transceiver-en-dis-able-into-seperate-functions.patch queue-3.13/can-flexcan-flexcan_open-fix-error-path-if-flexcan_chip_start-fails.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html