blob: 0bb3bd7636cd1a5c59e803d76a26a03627b9a2e0 [file] [log] [blame]
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +08001/*
yang.li24770372022-01-11 15:21:49 +08002 * Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +08003 *
yang.li24770372022-01-11 15:21:49 +08004 * SPDX-License-Identifier: MIT
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +08005 */
6
7#include "pmic.h"
8#include "myprintf.h"
9
xiaohu.huang2beac512022-05-07 15:10:04 +080010struct pmic_regulator *pmic_regulators[PMIC_MAXNUM] = { NULL1, NULL1, NULL1, NULL1, NULL1 };
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080011
12int pmic_regulators_register(struct pmic_regulator *PmicRegulator, int *dev_id)
13{
xiaohu.huang2beac512022-05-07 15:10:04 +080014 for (int i = 0; i < PMIC_MAXNUM; i++) {
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080015 if (pmic_regulators[i] == NULL1) {
16 pmic_regulators[i] = PmicRegulator;
17 *dev_id = i;
18 return 0;
19 }
20 }
21 printf("pmic_regulators has Greatered than PMIC_MAXNUM\n");
22 return -1;
23}
24
xiaohu.huang2beac512022-05-07 15:10:04 +080025void pmic_i2c_init(int dev_id, struct pmic_i2c *pmic_i2c)
26{
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080027 ((pmic_regulators[dev_id])->pmic_i2c_config)(pmic_i2c);
28}
29
xiaohu.huang2beac512022-05-07 15:10:04 +080030int pmic_regulator_ctrl(int dev_id, int id, int status)
31{
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080032 struct regulator_desc pmic_desc = ((pmic_regulators[dev_id])->rdev)[id];
xiaohu.huang2beac512022-05-07 15:10:04 +080033
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080034 pmic_desc.ops->ctrl(&pmic_desc, status);
35 return 0;
36}
37
xiaohu.huang2beac512022-05-07 15:10:04 +080038int pmic_regulator_set_voltage(int dev_id, int id, int sel)
39{
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080040 struct regulator_desc pmic_desc = ((pmic_regulators[dev_id])->rdev)[id];
xiaohu.huang2beac512022-05-07 15:10:04 +080041
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080042 pmic_desc.ops->set_voltage(&pmic_desc, sel);
43 return 0;
44}
45
xiaohu.huang2beac512022-05-07 15:10:04 +080046void pmic_osc(int dev_id, int status)
47{
Kelvin Zhangc4c3dd12021-12-24 20:59:18 +080048 ((pmic_regulators[dev_id])->osc_ctrl)(status);
49}