/* SPDX-License-Identifier: GPL-2.0-only */

#include <device/i2c_bus.h>
#include <device/device.h>
#include "pca9538.h"
#include "chip.h"

/* This function can be used from outside the chip driver to read input. */
uint8_t pca9538_read_input(void)
{
	struct device *dev = pca9538_get_dev();

	if (!dev)
		return 0;
	else
		return (uint8_t)(i2c_dev_readb_at(dev, INPUT_REG));
}

/* This function can be used from outside the chip driver to set output. */
void pca9538_set_output(uint8_t val)
{
	struct device *dev = pca9538_get_dev();

	if (dev)
		i2c_dev_writeb_at(dev, OUTPUT_REG, val);
}

static void pca9538_init(struct device *dev)
{
	struct drivers_i2c_pca9538_config *config = dev->chip_info;

	if (!config)
		return;
	/* Set up registers as requested in devicetree. */
	i2c_dev_writeb_at(dev, INPUT_INVERT_REG, config->invert);
	i2c_dev_writeb_at(dev, OUTPUT_REG, config->out_val);
	i2c_dev_writeb_at(dev, IO_CONFIG_REG, config->in_out);
}

static struct device_operations pca9538_ops = {
	.read_resources		= noop_read_resources,
	.set_resources		= noop_set_resources,
	.init			= pca9538_init,
};

static void pca9538_enable(struct device *dev)
{
	dev->ops = &pca9538_ops;
}

struct chip_operations drivers_i2c_pca9538_ops = {
	.name = "PCA9538",
	.enable_dev = pca9538_enable
};
