static void hdp_disable(struct hdmi_connector *hdmi_connector) { struct hdmi *hdmi = hdmi_connector->hdmi; const struct hdmi_platform_config *config = hdmi->config; struct device *dev = &hdmi->pdev->dev; int i, ret = 0; /* Disable HPD interrupt */ hdmi_write(hdmi, REG_HDMI_HPD_INT_CTRL, 0); msm_hdmi_set_mode(hdmi, false); enable_hpd_clocks(hdmi, false); pm_runtime_put_autosuspend(dev); ret = gpio_config(hdmi, false); if (ret) dev_warn(dev, "failed to unconfigure GPIOs: %d\n", ret); ret = pinctrl_pm_select_sleep_state(dev); if (ret) dev_warn(dev, "pinctrl state chg failed: %d\n", ret); for (i = 0; i < config->hpd_reg_cnt; i++) { ret = regulator_disable(hdmi->hpd_regs[i]); if (ret) dev_warn(dev, "failed to disable hpd regulator: %s (%d)\n", config->hpd_reg_names[i], ret); } }
static int dwc3_suspend(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); unsigned long flags; spin_lock_irqsave(&dwc->lock, flags); switch (dwc->dr_mode) { case USB_DR_MODE_PERIPHERAL: case USB_DR_MODE_OTG: dwc3_gadget_suspend(dwc); /* FALLTHROUGH */ case USB_DR_MODE_HOST: default: dwc3_event_buffers_cleanup(dwc); break; } dwc->gctl = dwc3_readl(dwc->regs, DWC3_GCTL); spin_unlock_irqrestore(&dwc->lock, flags); usb_phy_shutdown(dwc->usb3_phy); usb_phy_shutdown(dwc->usb2_phy); phy_exit(dwc->usb2_generic_phy); phy_exit(dwc->usb3_generic_phy); pinctrl_pm_select_sleep_state(dev); return 0; }
int register_c_can_dev(struct net_device *dev) { struct c_can_priv *priv = netdev_priv(dev); int err; /* Deactivate pins to prevent DRA7 DCAN IP from being * stuck in transition when module is disabled. * Pins are activated in c_can_start() and deactivated * in c_can_stop() */ pinctrl_pm_select_sleep_state(dev->dev.parent); c_can_pm_runtime_enable(priv); dev->flags |= IFF_ECHO; /* we support local echo */ dev->netdev_ops = &c_can_netdev_ops; err = register_candev(dev); if (err) c_can_pm_runtime_disable(priv); else devm_can_led_init(dev); return err; }
static int spi_st_remove(struct platform_device *pdev) { struct spi_master *master = platform_get_drvdata(pdev); struct spi_st *spi_st = spi_master_get_devdata(master); clk_disable_unprepare(spi_st->clk); pinctrl_pm_select_sleep_state(&pdev->dev); return 0; }
static int st_dwc3_suspend(struct device *dev) { struct st_dwc3 *dwc3_data = dev_get_drvdata(dev); reset_control_assert(dwc3_data->rstc_pwrdn); reset_control_assert(dwc3_data->rstc_rst); pinctrl_pm_select_sleep_state(dev); return 0; }
static int spi_st_runtime_suspend(struct device *dev) { struct spi_master *master = dev_get_drvdata(dev); struct spi_st *spi_st = spi_master_get_devdata(master); writel_relaxed(0, spi_st->base + SSC_IEN); pinctrl_pm_select_sleep_state(dev); clk_disable_unprepare(spi_st->clk); return 0; }
static int dwc3_suspend(struct device *dev) { struct dwc3 *dwc = dev_get_drvdata(dev); int ret; ret = dwc3_suspend_common(dwc); if (ret) return ret; pinctrl_pm_select_sleep_state(dev); return 0; }
static void c_can_stop(struct net_device *dev) { struct c_can_priv *priv = netdev_priv(dev); c_can_irq_control(priv, false); /* put ctrl to init on stop to end ongoing transmission */ priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_INIT); /* deactivate pins */ pinctrl_pm_select_sleep_state(dev->dev.parent); priv->can.state = CAN_STATE_STOPPED; }
static int serial_omap_suspend(struct device *dev) { struct uart_omap_port *up = dev_get_drvdata(dev); uart_suspend_port(&serial_omap_reg, &up->port); flush_work(&up->qos_work); /* Select sleep pin state */ pinctrl_pm_select_sleep_state(dev); if (device_may_wakeup(dev)) serial_omap_enable_wakeup(up, true); else serial_omap_enable_wakeup(up, false); return 0; }
static int __maybe_unused rockchip_thermal_suspend(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct rockchip_thermal_data *thermal = platform_get_drvdata(pdev); int i; for (i = 0; i < thermal->chip->chn_num; i++) rockchip_thermal_toggle_sensor(&thermal->sensors[i], false); thermal->chip->control(thermal->regs, false); clk_disable(thermal->pclk); clk_disable(thermal->clk); pinctrl_pm_select_sleep_state(dev); return 0; }
static int st_ehci_suspend(struct device *dev) { struct usb_hcd *hcd = dev_get_drvdata(dev); struct usb_ehci_pdata *pdata = dev_get_platdata(dev); struct platform_device *pdev = to_platform_device(dev); bool do_wakeup = device_may_wakeup(dev); int ret; ret = ehci_suspend(hcd, do_wakeup); if (ret) return ret; if (pdata->power_suspend) pdata->power_suspend(pdev); pinctrl_pm_select_sleep_state(dev); return ret; }
static int st_rc_suspend(struct device *dev) { struct st_rc_device *rc_dev = dev_get_drvdata(dev); if (device_may_wakeup(dev)) { if (!enable_irq_wake(rc_dev->irq)) rc_dev->irq_wake = 1; else return -EINVAL; } else { pinctrl_pm_select_sleep_state(dev); writel(0x00, rc_dev->rx_base + IRB_RX_EN); writel(0x00, rc_dev->rx_base + IRB_RX_INT_EN); clk_disable_unprepare(rc_dev->sys_clock); reset_control_assert(rc_dev->rstc); } return 0; }
static int imx_kbd_suspend(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct imx_keypad *kbd = platform_get_drvdata(pdev); struct input_dev *input_dev = kbd->input_dev; /* imx kbd can wake up system even clock is disabled */ mutex_lock(&input_dev->mutex); if (input_dev->users) clk_disable_unprepare(kbd->clk); mutex_unlock(&input_dev->mutex); if (device_may_wakeup(&pdev->dev)) enable_irq_wake(kbd->irq); else pinctrl_pm_select_sleep_state(dev); return 0; }
static int spi_imx_suspend(struct device *dev) { pinctrl_pm_select_sleep_state(dev); return 0; }