Lines Matching +full:mask +full:- +full:reset
1 /* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved.
41 /* Regulator control registers for shutdown/reset */
61 /* Buck TEST2 registers for shutdown/reset */
80 * struct pmic8xxx_pwrkey - pmic8xxx pwrkey information
116 enable_irq_wake(pwrkey->key_press_irq); in pmic8xxx_pwrkey_suspend()
126 disable_irq_wake(pwrkey->key_press_irq); in pmic8xxx_pwrkey_resume()
138 u8 mask, val; in pmic8xxx_pwrkey_shutdown() local
139 bool reset = system_state == SYSTEM_RESTART; in pmic8xxx_pwrkey_shutdown() local
141 if (pwrkey->shutdown_fn) { in pmic8xxx_pwrkey_shutdown()
142 error = pwrkey->shutdown_fn(pwrkey, reset); in pmic8xxx_pwrkey_shutdown()
148 * Select action to perform (reset or shutdown) when PS_HOLD goes low. in pmic8xxx_pwrkey_shutdown()
152 mask = PON_CNTL_1_PULL_UP_EN | PON_CNTL_1_USB_PWR_EN; in pmic8xxx_pwrkey_shutdown()
153 mask |= PON_CNTL_1_WD_EN_RESET; in pmic8xxx_pwrkey_shutdown()
154 val = mask; in pmic8xxx_pwrkey_shutdown()
155 if (!reset) in pmic8xxx_pwrkey_shutdown()
158 regmap_update_bits(pwrkey->regmap, PON_CNTL_1, mask, val); in pmic8xxx_pwrkey_shutdown()
209 return -EPERM; in pm8058_disable_smps_locally_set_pull_down()
288 static int pm8058_pwrkey_shutdown(struct pmic8xxx_pwrkey *pwrkey, bool reset) in pm8058_pwrkey_shutdown() argument
291 struct regmap *regmap = pwrkey->regmap; in pm8058_pwrkey_shutdown()
292 u8 mask, val; in pm8058_pwrkey_shutdown() local
295 if (!reset) { in pm8058_pwrkey_shutdown()
313 * Fix-up: Set regulator LDO22 to 1.225 V in high power mode. Leave its in pm8058_pwrkey_shutdown()
314 * pull-down state intact. This ensures a safe shutdown. in pm8058_pwrkey_shutdown()
321 mask = SLEEP_CTRL_SMPL_EN_RESET; in pm8058_pwrkey_shutdown()
323 if (reset) in pm8058_pwrkey_shutdown()
324 val = mask; in pm8058_pwrkey_shutdown()
325 return regmap_update_bits(regmap, PM8058_SLEEP_CTRL, mask, val); in pm8058_pwrkey_shutdown()
328 static int pm8921_pwrkey_shutdown(struct pmic8xxx_pwrkey *pwrkey, bool reset) in pm8921_pwrkey_shutdown() argument
330 struct regmap *regmap = pwrkey->regmap; in pm8921_pwrkey_shutdown()
331 u8 mask = SLEEP_CTRL_SMPL_EN_RESET; in pm8921_pwrkey_shutdown() local
335 if (reset) in pm8921_pwrkey_shutdown()
336 val = mask; in pm8921_pwrkey_shutdown()
337 return regmap_update_bits(regmap, PM8921_SLEEP_CTRL, mask, val); in pm8921_pwrkey_shutdown()
353 if (of_property_read_u32(pdev->dev.of_node, "debounce", &kpd_delay)) in pmic8xxx_pwrkey_probe()
358 dev_err(&pdev->dev, "invalid power key trigger delay\n"); in pmic8xxx_pwrkey_probe()
359 return -EINVAL; in pmic8xxx_pwrkey_probe()
362 pull_up = of_property_read_bool(pdev->dev.of_node, "pull-up"); in pmic8xxx_pwrkey_probe()
364 regmap = dev_get_regmap(pdev->dev.parent, NULL); in pmic8xxx_pwrkey_probe()
366 dev_err(&pdev->dev, "failed to locate regmap for the device\n"); in pmic8xxx_pwrkey_probe()
367 return -ENODEV; in pmic8xxx_pwrkey_probe()
370 pwrkey = devm_kzalloc(&pdev->dev, sizeof(*pwrkey), GFP_KERNEL); in pmic8xxx_pwrkey_probe()
372 return -ENOMEM; in pmic8xxx_pwrkey_probe()
374 pwrkey->shutdown_fn = of_device_get_match_data(&pdev->dev); in pmic8xxx_pwrkey_probe()
375 pwrkey->regmap = regmap; in pmic8xxx_pwrkey_probe()
376 pwrkey->key_press_irq = key_press_irq; in pmic8xxx_pwrkey_probe()
378 pwr = devm_input_allocate_device(&pdev->dev); in pmic8xxx_pwrkey_probe()
380 dev_dbg(&pdev->dev, "Can't allocate power button\n"); in pmic8xxx_pwrkey_probe()
381 return -ENOMEM; in pmic8xxx_pwrkey_probe()
386 pwr->name = "pmic8xxx_pwrkey"; in pmic8xxx_pwrkey_probe()
387 pwr->phys = "pmic8xxx_pwrkey/input0"; in pmic8xxx_pwrkey_probe()
394 dev_err(&pdev->dev, "failed reading PON_CNTL_1 err=%d\n", err); in pmic8xxx_pwrkey_probe()
407 dev_err(&pdev->dev, "failed writing PON_CNTL_1 err=%d\n", err); in pmic8xxx_pwrkey_probe()
411 err = devm_request_irq(&pdev->dev, key_press_irq, pwrkey_press_irq, in pmic8xxx_pwrkey_probe()
415 dev_err(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", in pmic8xxx_pwrkey_probe()
420 err = devm_request_irq(&pdev->dev, key_release_irq, pwrkey_release_irq, in pmic8xxx_pwrkey_probe()
424 dev_err(&pdev->dev, "Can't get %d IRQ for pwrkey: %d\n", in pmic8xxx_pwrkey_probe()
431 dev_err(&pdev->dev, "Can't register power key: %d\n", err); in pmic8xxx_pwrkey_probe()
436 device_init_wakeup(&pdev->dev, 1); in pmic8xxx_pwrkey_probe()
442 { .compatible = "qcom,pm8058-pwrkey", .data = &pm8058_pwrkey_shutdown },
443 { .compatible = "qcom,pm8921-pwrkey", .data = &pm8921_pwrkey_shutdown },
452 .name = "pm8xxx-pwrkey",