Lines Matching full:pmic
3 * MFD core driver for Intel Broxton Whiskey Cove PMIC
21 /* PMIC device registers */
59 /* Whiskey Cove PMIC share same ACPI ID between different platforms */
293 struct intel_soc_pmic *pmic = context; in regmap_ipc_byte_reg_read() local
295 if (!pmic) in regmap_ipc_byte_reg_read()
307 ret = intel_scu_ipc_dev_command(pmic->scu, PMC_PMIC_ACCESS, in regmap_ipc_byte_reg_read()
323 struct intel_soc_pmic *pmic = context; in regmap_ipc_byte_reg_write() local
325 if (!pmic) in regmap_ipc_byte_reg_write()
338 return intel_scu_ipc_dev_command(pmic->scu, PMC_PMIC_ACCESS, in regmap_ipc_byte_reg_write()
343 /* sysfs interfaces to r/w PMIC registers, required by initial script */
368 struct intel_soc_pmic *pmic = dev_get_drvdata(dev); in val_show() local
370 ret = regmap_read(pmic->regmap, bxtwc_reg_addr, &val); in val_show()
384 struct intel_soc_pmic *pmic = dev_get_drvdata(dev); in val_store() local
390 ret = regmap_write(pmic->regmap, bxtwc_reg_addr, val); in val_store()
423 static int bxtwc_add_chained_irq_chip(struct intel_soc_pmic *pmic, in bxtwc_add_chained_irq_chip() argument
433 return dev_err_probe(pmic->dev, irq, "Failed to get parent vIRQ(%d) for chip %s\n", in bxtwc_add_chained_irq_chip()
436 return devm_regmap_add_irq_chip(pmic->dev, pmic->regmap, irq, irq_flags, in bxtwc_add_chained_irq_chip()
440 static int bxtwc_add_chained_devices(struct intel_soc_pmic *pmic, in bxtwc_add_chained_devices() argument
447 struct device *dev = pmic->dev; in bxtwc_add_chained_devices()
451 ret = bxtwc_add_chained_irq_chip(pmic, pdata, pirq, irq_flags, chip, data); in bxtwc_add_chained_devices()
466 struct intel_soc_pmic *pmic; in bxtwc_probe() local
470 return dev_err_probe(dev, -ENODEV, "Failed to get PMIC hardware revision\n"); in bxtwc_probe()
472 return dev_err_probe(dev, -ENODEV, "Invalid PMIC hardware revision: %llu\n", hrv); in bxtwc_probe()
474 pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL); in bxtwc_probe()
475 if (!pmic) in bxtwc_probe()
481 pmic->irq = ret; in bxtwc_probe()
483 platform_set_drvdata(pdev, pmic); in bxtwc_probe()
484 pmic->dev = dev; in bxtwc_probe()
486 pmic->scu = devm_intel_scu_ipc_dev_get(dev); in bxtwc_probe()
487 if (!pmic->scu) in bxtwc_probe()
490 pmic->regmap = devm_regmap_init(dev, NULL, pmic, &bxtwc_regmap_config); in bxtwc_probe()
491 if (IS_ERR(pmic->regmap)) in bxtwc_probe()
492 return dev_err_probe(dev, PTR_ERR(pmic->regmap), "Failed to initialise regmap\n"); in bxtwc_probe()
494 ret = devm_regmap_add_irq_chip(dev, pmic->regmap, pmic->irq, in bxtwc_probe()
497 &pmic->irq_chip_data); in bxtwc_probe()
501 ret = bxtwc_add_chained_devices(pmic, bxt_wc_tmu_dev, ARRAY_SIZE(bxt_wc_tmu_dev), in bxtwc_probe()
502 pmic->irq_chip_data, in bxtwc_probe()
506 &pmic->irq_chip_data_tmu); in bxtwc_probe()
510 ret = bxtwc_add_chained_irq_chip(pmic, pmic->irq_chip_data, in bxtwc_probe()
514 &pmic->irq_chip_data_pwrbtn); in bxtwc_probe()
518 ret = bxtwc_add_chained_devices(pmic, bxt_wc_bcu_dev, ARRAY_SIZE(bxt_wc_bcu_dev), in bxtwc_probe()
519 pmic->irq_chip_data, in bxtwc_probe()
523 &pmic->irq_chip_data_bcu); in bxtwc_probe()
527 ret = bxtwc_add_chained_devices(pmic, bxt_wc_adc_dev, ARRAY_SIZE(bxt_wc_adc_dev), in bxtwc_probe()
528 pmic->irq_chip_data, in bxtwc_probe()
532 &pmic->irq_chip_data_adc); in bxtwc_probe()
536 ret = bxtwc_add_chained_devices(pmic, bxt_wc_chgr_dev, ARRAY_SIZE(bxt_wc_chgr_dev), in bxtwc_probe()
537 pmic->irq_chip_data, in bxtwc_probe()
541 &pmic->irq_chip_data_chgr); in bxtwc_probe()
546 ret = bxtwc_add_chained_irq_chip(pmic, pmic->irq_chip_data, in bxtwc_probe()
550 &pmic->irq_chip_data_crit); in bxtwc_probe()
566 regmap_update_bits(pmic->regmap, BXTWC_MIRQLVL1, BXTWC_MIRQLVL1_MCHGR, 0); in bxtwc_probe()
573 struct intel_soc_pmic *pmic = platform_get_drvdata(pdev); in bxtwc_shutdown() local
575 disable_irq(pmic->irq); in bxtwc_shutdown()
580 struct intel_soc_pmic *pmic = dev_get_drvdata(dev); in bxtwc_suspend() local
582 disable_irq(pmic->irq); in bxtwc_suspend()
589 struct intel_soc_pmic *pmic = dev_get_drvdata(dev); in bxtwc_resume() local
591 enable_irq(pmic->irq); in bxtwc_resume()
607 .name = "BXTWC PMIC",