Lines Matching +full:mmc +full:- +full:pwrseq
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * pwrseq_sd8787.c - power sequence support for Marvell SD8787 BT + Wifi chip
22 #include <linux/mmc/host.h>
24 #include "pwrseq.h"
27 struct mmc_pwrseq pwrseq; member
32 #define to_pwrseq_sd8787(p) container_of(p, struct mmc_pwrseq_sd8787, pwrseq)
36 struct mmc_pwrseq_sd8787 *pwrseq = to_pwrseq_sd8787(host->pwrseq); in mmc_pwrseq_sd8787_pre_power_on() local
38 gpiod_set_value_cansleep(pwrseq->reset_gpio, 1); in mmc_pwrseq_sd8787_pre_power_on()
41 gpiod_set_value_cansleep(pwrseq->pwrdn_gpio, 1); in mmc_pwrseq_sd8787_pre_power_on()
46 struct mmc_pwrseq_sd8787 *pwrseq = to_pwrseq_sd8787(host->pwrseq); in mmc_pwrseq_sd8787_power_off() local
48 gpiod_set_value_cansleep(pwrseq->pwrdn_gpio, 0); in mmc_pwrseq_sd8787_power_off()
49 gpiod_set_value_cansleep(pwrseq->reset_gpio, 0); in mmc_pwrseq_sd8787_power_off()
58 { .compatible = "mmc-pwrseq-sd8787",},
65 struct mmc_pwrseq_sd8787 *pwrseq; in mmc_pwrseq_sd8787_probe() local
66 struct device *dev = &pdev->dev; in mmc_pwrseq_sd8787_probe()
68 pwrseq = devm_kzalloc(dev, sizeof(*pwrseq), GFP_KERNEL); in mmc_pwrseq_sd8787_probe()
69 if (!pwrseq) in mmc_pwrseq_sd8787_probe()
70 return -ENOMEM; in mmc_pwrseq_sd8787_probe()
72 pwrseq->pwrdn_gpio = devm_gpiod_get(dev, "powerdown", GPIOD_OUT_LOW); in mmc_pwrseq_sd8787_probe()
73 if (IS_ERR(pwrseq->pwrdn_gpio)) in mmc_pwrseq_sd8787_probe()
74 return PTR_ERR(pwrseq->pwrdn_gpio); in mmc_pwrseq_sd8787_probe()
76 pwrseq->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); in mmc_pwrseq_sd8787_probe()
77 if (IS_ERR(pwrseq->reset_gpio)) in mmc_pwrseq_sd8787_probe()
78 return PTR_ERR(pwrseq->reset_gpio); in mmc_pwrseq_sd8787_probe()
80 pwrseq->pwrseq.dev = dev; in mmc_pwrseq_sd8787_probe()
81 pwrseq->pwrseq.ops = &mmc_pwrseq_sd8787_ops; in mmc_pwrseq_sd8787_probe()
82 pwrseq->pwrseq.owner = THIS_MODULE; in mmc_pwrseq_sd8787_probe()
83 platform_set_drvdata(pdev, pwrseq); in mmc_pwrseq_sd8787_probe()
85 return mmc_pwrseq_register(&pwrseq->pwrseq); in mmc_pwrseq_sd8787_probe()
90 struct mmc_pwrseq_sd8787 *pwrseq = platform_get_drvdata(pdev); in mmc_pwrseq_sd8787_remove() local
92 mmc_pwrseq_unregister(&pwrseq->pwrseq); in mmc_pwrseq_sd8787_remove()