X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2Fdrivers%2Fnet%2Fcan%2Fc_can%2Fc_can.c;fp=kernel%2Fdrivers%2Fnet%2Fcan%2Fc_can%2Fc_can.c;h=5d214d1353320856cf3de91d837b910df3f3de24;hb=fdb8b20906f3546ba6c2f9f0686d8a5189516ba3;hp=041525d2595ced06ee4363bb09f5fe62dfe5b7ec;hpb=cc84a1f21026270463b580f2564f9d71912b20db;p=kvmfornfv.git diff --git a/kernel/drivers/net/can/c_can/c_can.c b/kernel/drivers/net/can/c_can/c_can.c index 041525d25..5d214d135 100644 --- a/kernel/drivers/net/can/c_can/c_can.c +++ b/kernel/drivers/net/can/c_can/c_can.c @@ -592,6 +592,7 @@ static int c_can_start(struct net_device *dev) { struct c_can_priv *priv = netdev_priv(dev); int err; + struct pinctrl *p; /* basic c_can configuration */ err = c_can_chip_config(dev); @@ -604,8 +605,13 @@ static int c_can_start(struct net_device *dev) priv->can.state = CAN_STATE_ERROR_ACTIVE; - /* activate pins */ - pinctrl_pm_select_default_state(dev->dev.parent); + /* Attempt to use "active" if available else use "default" */ + p = pinctrl_get_select(priv->device, "active"); + if (!IS_ERR(p)) + pinctrl_put(p); + else + pinctrl_pm_select_default_state(priv->device); + return 0; }