Lines Matching refs:pwrseq
23 struct mmc_pwrseq pwrseq; member
29 static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq, in mmc_pwrseq_simple_set_gpios_value() argument
33 struct gpio_descs *reset_gpios = pwrseq->reset_gpios; in mmc_pwrseq_simple_set_gpios_value()
45 struct mmc_pwrseq_simple *pwrseq = container_of(host->pwrseq, in mmc_pwrseq_simple_pre_power_on() local
46 struct mmc_pwrseq_simple, pwrseq); in mmc_pwrseq_simple_pre_power_on()
48 if (!IS_ERR(pwrseq->ext_clk) && !pwrseq->clk_enabled) { in mmc_pwrseq_simple_pre_power_on()
49 clk_prepare_enable(pwrseq->ext_clk); in mmc_pwrseq_simple_pre_power_on()
50 pwrseq->clk_enabled = true; in mmc_pwrseq_simple_pre_power_on()
53 mmc_pwrseq_simple_set_gpios_value(pwrseq, 1); in mmc_pwrseq_simple_pre_power_on()
58 struct mmc_pwrseq_simple *pwrseq = container_of(host->pwrseq, in mmc_pwrseq_simple_post_power_on() local
59 struct mmc_pwrseq_simple, pwrseq); in mmc_pwrseq_simple_post_power_on()
61 mmc_pwrseq_simple_set_gpios_value(pwrseq, 0); in mmc_pwrseq_simple_post_power_on()
66 struct mmc_pwrseq_simple *pwrseq = container_of(host->pwrseq, in mmc_pwrseq_simple_power_off() local
67 struct mmc_pwrseq_simple, pwrseq); in mmc_pwrseq_simple_power_off()
69 mmc_pwrseq_simple_set_gpios_value(pwrseq, 1); in mmc_pwrseq_simple_power_off()
71 if (!IS_ERR(pwrseq->ext_clk) && pwrseq->clk_enabled) { in mmc_pwrseq_simple_power_off()
72 clk_disable_unprepare(pwrseq->ext_clk); in mmc_pwrseq_simple_power_off()
73 pwrseq->clk_enabled = false; in mmc_pwrseq_simple_power_off()
79 struct mmc_pwrseq_simple *pwrseq = container_of(host->pwrseq, in mmc_pwrseq_simple_free() local
80 struct mmc_pwrseq_simple, pwrseq); in mmc_pwrseq_simple_free()
82 gpiod_put_array(pwrseq->reset_gpios); in mmc_pwrseq_simple_free()
84 if (!IS_ERR(pwrseq->ext_clk)) in mmc_pwrseq_simple_free()
85 clk_put(pwrseq->ext_clk); in mmc_pwrseq_simple_free()
87 kfree(pwrseq); in mmc_pwrseq_simple_free()
100 struct mmc_pwrseq_simple *pwrseq; in mmc_pwrseq_simple_alloc() local
103 pwrseq = kzalloc(sizeof(*pwrseq), GFP_KERNEL); in mmc_pwrseq_simple_alloc()
104 if (!pwrseq) in mmc_pwrseq_simple_alloc()
107 pwrseq->ext_clk = clk_get(dev, "ext_clock"); in mmc_pwrseq_simple_alloc()
108 if (IS_ERR(pwrseq->ext_clk) && in mmc_pwrseq_simple_alloc()
109 PTR_ERR(pwrseq->ext_clk) != -ENOENT) { in mmc_pwrseq_simple_alloc()
110 ret = PTR_ERR(pwrseq->ext_clk); in mmc_pwrseq_simple_alloc()
114 pwrseq->reset_gpios = gpiod_get_array(dev, "reset", GPIOD_OUT_HIGH); in mmc_pwrseq_simple_alloc()
115 if (IS_ERR(pwrseq->reset_gpios)) { in mmc_pwrseq_simple_alloc()
116 ret = PTR_ERR(pwrseq->reset_gpios); in mmc_pwrseq_simple_alloc()
120 pwrseq->pwrseq.ops = &mmc_pwrseq_simple_ops; in mmc_pwrseq_simple_alloc()
122 return &pwrseq->pwrseq; in mmc_pwrseq_simple_alloc()
124 if (!IS_ERR(pwrseq->ext_clk)) in mmc_pwrseq_simple_alloc()
125 clk_put(pwrseq->ext_clk); in mmc_pwrseq_simple_alloc()
127 kfree(pwrseq); in mmc_pwrseq_simple_alloc()