Re: [PATCH v7 6/8] net: can: c_can: Disable pins when CAN interface is down
From: Roger Quadros <hidden>
Date: 2014-11-28 09:22:12
Also in:
linux-can, linux-omap
On 27/11/14 23:19, Marc Kleine-Budde wrote:
On 11/27/2014 02:26 PM, Linus Walleij wrote:quoted
On Fri, Nov 14, 2014 at 4:40 PM, Roger Quadros [off-list ref] wrote:quoted
DRA7 CAN IP suffers from a problem which causes it to be prevented from fully turning OFF (i.e. stuck in transition) if the module was disabled while there was traffic on the CAN_RX line. To work around this issue we select the SLEEP pin state by default on probe and use the DEFAULT pin state on CAN up and back to the SLEEP pin state on CAN down. Signed-off-by: Roger Quadros <redacted>Reviewed-by: Linus Walleij <redacted>Thanks, however the patch is already upstream.quoted
I see you figured it out all by yourselves :D (Sorry for being absent.)quoted
+#include <linux/pinctrl/consumer.h> + pinctrl_pm_select_default_state(dev->dev.parent); + pinctrl_pm_select_sleep_state(dev->dev.parent); + pinctrl_pm_select_sleep_state(dev->dev.parent);NB: in drivers/base/pinctrl.c: #ifdef CONFIG_PM /* * If power management is enabled, we also look for the optional * sleep and idle pin states, with semantics as defined in * <linux/pinctrl/pinctrl-state.h> */ dev->pins->sleep_state = pinctrl_lookup_state(dev->pins->p, PINCTRL_STATE_SLEEP); So if these states are necessary for the driver to work, put depends on PM or select PM in the Kconfig.Roger, you can prepare a patch, if needed.
As pinctrl sleep is an optional driver feature we don't need to do any changes. For the DRA7 specific case, the platform configs ensure that PM is enabled. cheers, -roger