Skip to content

Commit

Permalink
drivers: mfd: add Maxim MAX20335 MFD driver
Browse files Browse the repository at this point in the history
Maxim MAX20335 is a PMIC with Ultra-Low IQ Voltage Regulators and
Battery Chargers for Small Lithium Ion Systems.

Signed-off-by: Bartosz Bilas <[email protected]>
  • Loading branch information
bbilas authored and fabiobaltieri committed Nov 2, 2023
1 parent e07ded1 commit 4a39740
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 0 deletions.
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
/drivers/led_strip/ @mbolivar-ampere
/drivers/lora/ @Mani-Sadhasivam
/drivers/mbox/ @carlocaione
/drivers/mfd/mfd_max20335.c @bbilas
/drivers/misc/ @tejlmand
/drivers/misc/ft8xx/ @hubertmis
/drivers/mm/ @dcpleung
Expand Down
1 change: 1 addition & 0 deletions drivers/mfd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

zephyr_library()

zephyr_library_sources_ifdef(CONFIG_MFD_MAX20335 mfd_max20335.c)
zephyr_library_sources_ifdef(CONFIG_MFD_NCT38XX mfd_nct38xx.c)
zephyr_library_sources_ifdef(CONFIG_MFD_NPM1300 mfd_npm1300.c)
zephyr_library_sources_ifdef(CONFIG_MFD_NPM6001 mfd_npm6001.c)
Expand Down
1 change: 1 addition & 0 deletions drivers/mfd/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ config MFD_INIT_PRIORITY
Multi-function devices initialization priority.

source "drivers/mfd/Kconfig.axp192"
source "drivers/mfd/Kconfig.max20335"
source "drivers/mfd/Kconfig.nct38xx"
source "drivers/mfd/Kconfig.npm1300"
source "drivers/mfd/Kconfig.npm6001"
Expand Down
10 changes: 10 additions & 0 deletions drivers/mfd/Kconfig.max20335
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright (c) 2023 Grinn
# SPDX -License-Identifier: Apache-2.0

config MFD_MAX20335
bool "MAX20335 PMIC multi-function device driver"
default y
depends on DT_HAS_MAXIM_MAX20335_ENABLED
select I2C
help
Enable the Maxim MAX20335 PMIC multi-function device driver
51 changes: 51 additions & 0 deletions drivers/mfd/mfd_max20335.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Copyright (c) 2023 Grinn
* SPDX-License-Identifier: Apache-2.0
*/

#define DT_DRV_COMPAT maxim_max20335

#include <errno.h>

#include <zephyr/drivers/i2c.h>
#include <zephyr/sys/util.h>

#define MAX20335_REG_CHIP_ID 0x00
#define MAX20335_CHIP_ID_VAL 0x04

struct mfd_max20335_config {
struct i2c_dt_spec bus;
};

static int mfd_max20335_init(const struct device *dev)
{
const struct mfd_max20335_config *config = dev->config;
uint8_t val;
int ret;

if (!i2c_is_ready_dt(&config->bus)) {
return -ENODEV;
}

ret = i2c_reg_read_byte_dt(&config->bus, MAX20335_REG_CHIP_ID, &val);
if (ret < 0) {
return ret;
}

if (val != MAX20335_CHIP_ID_VAL) {
return -ENODEV;
}

return 0;
}

#define MFD_MA20335_DEFINE(inst) \
static const struct mfd_max20335_config mfd_max20335_config##inst = { \
.bus = I2C_DT_SPEC_INST_GET(inst), \
}; \
\
DEVICE_DT_INST_DEFINE(inst, mfd_max20335_init, NULL, NULL, \
&mfd_max20335_config##inst, POST_KERNEL, \
CONFIG_MFD_INIT_PRIORITY, NULL);

DT_INST_FOREACH_STATUS_OKAY(MFD_MA20335_DEFINE)
12 changes: 12 additions & 0 deletions dts/bindings/mfd/maxim,max20335.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Copyright (c) 2023 Grinn
# SPDX-License-Identifier: Apache-2.0

description: Maxim MAX20335

compatible: "maxim,max20335"

include: i2c-device.yaml

properties:
reg:
required: true

0 comments on commit 4a39740

Please sign in to comment.