blob: 724d5fd2e1c0156ec29ec74f540ce09927c24b63 [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
10struct pmic_regulator *pmic_regulators[PMIC_MAXNUM] = {NULL1,NULL1,NULL1,NULL1,NULL1};
11
12int pmic_regulators_register(struct pmic_regulator *PmicRegulator, int *dev_id)
13{
14 for (int i = 0;i < PMIC_MAXNUM;i++) {
15 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
25void pmic_i2c_init(int dev_id,struct pmic_i2c *pmic_i2c) {
26 ((pmic_regulators[dev_id])->pmic_i2c_config)(pmic_i2c);
27}
28
29int pmic_regulator_ctrl(int dev_id, int id, int status){
30 struct regulator_desc pmic_desc = ((pmic_regulators[dev_id])->rdev)[id];
31 pmic_desc.ops->ctrl(&pmic_desc, status);
32 return 0;
33}
34
35int pmic_regulator_set_voltage(int dev_id, int id,int sel){
36 struct regulator_desc pmic_desc = ((pmic_regulators[dev_id])->rdev)[id];
37 pmic_desc.ops->set_voltage(&pmic_desc, sel);
38 return 0;
39}
40
41void pmic_osc(int dev_id, int status){
42 ((pmic_regulators[dev_id])->osc_ctrl)(status);
43}
44
45
46