diff --git a/sys/conf/files b/sys/conf/files --- a/sys/conf/files +++ b/sys/conf/files @@ -1586,6 +1586,8 @@ dev/dcons/dcons.c optional dcons dev/dcons/dcons_crom.c optional dcons_crom dev/dcons/dcons_os.c optional dcons +dev/dialog/da9063/da9063_if.m optional da9063_pmic +dev/dialog/da9063/da9063_iic.c optional da9063_pmic iicbus fdt dev/dme/if_dme.c optional dme dev/drm2/drm_agpsupport.c optional drm2 dev/drm2/drm_auth.c optional drm2 diff --git a/sys/dev/dialog/da9063/da9063_if.m b/sys/dev/dialog/da9063/da9063_if.m new file mode 100644 --- /dev/null +++ b/sys/dev/dialog/da9063/da9063_if.m @@ -0,0 +1,52 @@ +#- +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# Copyright (c) 2022 Jessica Clarke +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# + +# +# The Dialog Semiconductor DA9063 PMIC is a multi-function device that can be +# connected using both I2C and SPI. This provides a bus-independent interface +# to the underlying protocol-specific driver for the child devices. +# +INTERFACE da9063; + +METHOD int read { + device_t dev; + uint16_t addr; + uint8_t *val; +}; + +METHOD int write { + device_t dev; + uint16_t addr; + uint8_t val; +}; + +METHOD int modify { + device_t dev; + uint16_t addr; + uint8_t clear_mask; + uint8_t set_mask; +}; diff --git a/sys/dev/dialog/da9063/da9063_iic.c b/sys/dev/dialog/da9063/da9063_iic.c new file mode 100644 --- /dev/null +++ b/sys/dev/dialog/da9063/da9063_iic.c @@ -0,0 +1,261 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2022 Jessica Clarke + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* Dialog Semiconductor DA9063 PMIC, 2-WIRE */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "da9063_if.h" + +#define DA9063_IIC_PAGE_SHIFT 8 +#define DA9063_IIC_PAGE_SIZE (1 << DA9063_IIC_PAGE_SHIFT) +#define DA9063_IIC_PAGE(_a) ((_a) >> DA9063_IIC_PAGE_SHIFT) +#define DA9063_IIC_PAGE_OFF(_a) ((_a) & (DA9063_IIC_PAGE_SIZE - 1)) +#define DA9063_IIC_ADDR(_p, _o) (((_p) << DA9063_IIC_PAGE_SHIFT) | (_o)) + +/* + * For 2-WIRE (I2C) operation pages are 256 registers but PAGE_CON is in units + * of 128 registers with the LSB ignored so scale the page when writing to it. + */ +#define DA9063_IIC_PAGE_CON_REG_PAGE_SHIFT 1 + +struct da9063_iic_softc { + struct simplebus_softc simplebus_sc; + device_t dev; + struct mtx mtx; + uint8_t page; +}; + +#define DA9063_IIC_LOCK(sc) mtx_lock(&(sc)->mtx) +#define DA9063_IIC_UNLOCK(sc) mtx_unlock(&(sc)->mtx) +#define DA9063_IIC_ASSERT_LOCKED(sc) mtx_assert(&(sc)->mtx, MA_OWNED); +#define DA9063_IIC_ASSERT_UNLOCKED(sc) mtx_assert(&(sc)->mtx, MA_NOTOWNED); + +static struct ofw_compat_data compat_data[] = { + { "dlg,da9063", 1 }, + { NULL, 0 } +}; + +static int +da9063_iic_select_page(struct da9063_iic_softc *sc, uint16_t page) +{ + uint8_t reg; + int error; + + DA9063_IIC_ASSERT_LOCKED(sc); + + if (page == sc->page) + return (0); + + error = iicdev_readfrom(sc->dev, DA9063_PAGE_CON, ®, 1, IIC_WAIT); + if (error != 0) + return (iic2errno(error)); + + reg &= ~(DA9063_PAGE_CON_REG_PAGE_MASK << + DA9063_PAGE_CON_REG_PAGE_SHIFT); + reg |= (page << DA9063_IIC_PAGE_CON_REG_PAGE_SHIFT) << + DA9063_PAGE_CON_REG_PAGE_SHIFT; + + error = iicdev_writeto(sc->dev, DA9063_PAGE_CON, ®, 1, IIC_WAIT); + if (error != 0) + return (iic2errno(error)); + + sc->page = page; + + return (0); +} + +static int +da9063_iic_read(device_t dev, uint16_t addr, uint8_t *val) +{ + struct da9063_iic_softc *sc; + int error; + + sc = device_get_softc(dev); + + DA9063_IIC_LOCK(sc); + + error = da9063_iic_select_page(sc, DA9063_IIC_PAGE(addr)); + if (error != 0) + goto error; + + error = iicdev_readfrom(dev, DA9063_IIC_PAGE_OFF(addr), val, 1, + IIC_WAIT); + if (error != 0) + error = iic2errno(error); + +error: + DA9063_IIC_UNLOCK(sc); + + return (error); +} + +static int +da9063_iic_write(device_t dev, uint16_t addr, uint8_t val) +{ + struct da9063_iic_softc *sc; + int error; + + sc = device_get_softc(dev); + + DA9063_IIC_LOCK(sc); + + error = da9063_iic_select_page(sc, DA9063_IIC_PAGE(addr)); + if (error != 0) + goto error; + + error = iicdev_writeto(dev, DA9063_IIC_PAGE_OFF(addr), &val, 1, + IIC_WAIT); + if (error != 0) + error = iic2errno(error); + +error: + DA9063_IIC_UNLOCK(sc); + + return (error); +} + +static int +da9063_iic_modify(device_t dev, uint16_t addr, uint8_t clear_mask, + uint8_t set_mask) +{ + struct da9063_iic_softc *sc; + uint8_t reg; + int error; + + sc = device_get_softc(dev); + + DA9063_IIC_LOCK(sc); + + error = da9063_iic_select_page(sc, DA9063_IIC_PAGE(addr)); + if (error != 0) + goto error; + + error = iicdev_readfrom(dev, DA9063_IIC_PAGE_OFF(addr), ®, 1, + IIC_WAIT); + if (error != 0) { + error = iic2errno(error); + goto error; + } + + reg &= ~clear_mask; + reg |= set_mask; + + error = iicdev_writeto(dev, DA9063_IIC_PAGE_OFF(addr), ®, 1, + IIC_WAIT); + if (error != 0) + error = iic2errno(error); + +error: + DA9063_IIC_UNLOCK(sc); + + return (error); +} + +static int +da9063_iic_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Dialog DA9063 PMIC"); + + return (BUS_PROBE_DEFAULT); +} + +static int +da9063_iic_attach(device_t dev) +{ + struct da9063_iic_softc *sc; + uint8_t reg; + int error; + + sc = device_get_softc(dev); + + sc->dev = dev; + + error = iicdev_readfrom(dev, DA9063_PAGE_CON, ®, 1, IIC_WAIT); + if (error != 0) + return (iic2errno(error)); + + sc->page = ((reg >> DA9063_PAGE_CON_REG_PAGE_SHIFT) & + DA9063_PAGE_CON_REG_PAGE_MASK) >> DA9063_IIC_PAGE_CON_REG_PAGE_SHIFT; + mtx_init(&sc->mtx, device_get_nameunit(sc->dev), NULL, MTX_DEF); + + sc->simplebus_sc.flags |= SB_FLAG_NO_RANGES; + + return (simplebus_attach(dev)); +} + +static int +da9063_iic_detach(device_t dev) +{ + struct da9063_iic_softc *sc; + int error; + + sc = device_get_softc(dev); + + error = simplebus_detach(dev); + if (error != 0) + return (error); + + mtx_destroy(&sc->mtx); + + return (0); +} + +static device_method_t da9063_iic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, da9063_iic_probe), + DEVMETHOD(device_attach, da9063_iic_attach), + DEVMETHOD(device_detach, da9063_iic_detach), + + /* DA9063 interface */ + DEVMETHOD(da9063_read, da9063_iic_read), + DEVMETHOD(da9063_write, da9063_iic_write), + DEVMETHOD(da9063_modify, da9063_iic_modify), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(da9063_pmic, da9063_iic_driver, da9063_iic_methods, + sizeof(struct da9063_iic_softc), simplebus_driver); + +DRIVER_MODULE(da9063_iic, iicbus, da9063_iic_driver, NULL, NULL); diff --git a/sys/dev/dialog/da9063/da9063reg.h b/sys/dev/dialog/da9063/da9063reg.h new file mode 100644 --- /dev/null +++ b/sys/dev/dialog/da9063/da9063reg.h @@ -0,0 +1,1209 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2022 Jessica Clarke + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _DA9063_REG_H_ +#define _DA9063_REG_H_ + +/* + * Reference: DA9063 System PMIC for Mobile and Automotive Applications + * datasheet (https://www.renesas.com/us/en/document/dst/da9063-datasheet), + * revision 2.4. + */ + +/* Page 0 */ + +#define DA9063_PAGE_CON 0x00 +#define DA9063_PAGE_CON_REG_PAGE_SHIFT 0 +#define DA9063_PAGE_CON_REG_PAGE_MASK 0x07 +#define DA9063_PAGE_CON_WRITE_MODE 0x40 +#define DA9063_PAGE_CON_REVERT 0x80 + +/* System Control and Event Registers (SYSMON) */ + +#define DA9063_STATUS_A 0x01 +#define DA9063_STATUS_A_NONKEY 0x01 +#define DA9063_STATUS_A_WAKE 0x02 +#define DA9063_STATUS_A_DVC_BUSY 0x04 +#define DA9063_STATUS_A_COMP1V2 0x08 +#define DA9063_STATUS_B 0x02 +#define DA9063_STATUS_B_GPI0 0x01 +#define DA9063_STATUS_B_GPI1 0x02 +#define DA9063_STATUS_B_GPI2 0x04 +#define DA9063_STATUS_B_GPI3 0x08 +#define DA9063_STATUS_B_GPI4 0x10 +#define DA9063_STATUS_B_GPI5 0x20 +#define DA9063_STATUS_B_GPI6 0x40 +#define DA9063_STATUS_B_GPI7 0x80 +#define DA9063_STATUS_C 0x03 +#define DA9063_STATUS_C_GPI8 0x01 +#define DA9063_STATUS_C_GPI9 0x02 +#define DA9063_STATUS_C_GPI10 0x04 +#define DA9063_STATUS_C_GPI11 0x08 +#define DA9063_STATUS_C_GPI12 0x10 +#define DA9063_STATUS_C_GPI13 0x20 +#define DA9063_STATUS_C_GPI14 0x40 +#define DA9063_STATUS_C_GPI15 0x80 +#define DA9063_STATUS_D 0x04 +#define DA9063_STATUS_D_LDO3_LIM 0x08 +#define DA9063_STATUS_D_LDO4_LIM 0x10 +#define DA9063_STATUS_D_LDO7_LIM 0x20 +#define DA9063_STATUS_D_LDO8_LIM 0x40 +#define DA9063_STATUS_D_LDO11_LIM 0x80 +#define DA9063_FAULT_LOG 0x05 +#define DA9063_FAULT_LOG_TWD_ERROR 0x01 +#define DA9063_FAULT_LOG_POR 0x02 +#define DA9063_FAULT_LOG_VDD_FAULT 0x04 +#define DA9063_FAULT_LOG_VDD_START 0x08 +#define DA9063_FAULT_LOG_TEMP_CRIT 0x10 +#define DA9063_FAULT_LOG_KEY_RESET 0x20 +#define DA9063_FAULT_LOG_NSHUTDOWN 0x40 +#define DA9063_FAULT_LOG_WAIT_SHUT 0x80 +#define DA9063_EVENT_A 0x06 +#define DA9063_EVENT_A_E_NONKEY 0x01 +#define DA9063_EVENT_A_E_ALARM 0x02 +#define DA9063_EVENT_A_E_TICK 0x04 +#define DA9063_EVENT_A_E_ADC_RDY 0x08 +#define DA9063_EVENT_A_E_SEQ_RDY 0x10 +#define DA9063_EVENT_A_EVENTS_B 0x20 +#define DA9063_EVENT_A_EVENTS_C 0x40 +#define DA9063_EVENT_A_EVENTS_D 0x80 +#define DA9063_EVENT_B 0x07 +#define DA9063_EVENT_B_E_WAKE 0x01 +#define DA9063_EVENT_B_E_TEMP 0x02 +#define DA9063_EVENT_B_E_COMP_1V2 0x04 +#define DA9063_EVENT_B_E_LDO_LIM 0x08 +#define DA9063_EVENT_B_E_REG_UVOV 0x10 +#define DA9063_EVENT_B_E_DVC_RDY 0x20 +#define DA9063_EVENT_B_E_VDD_MON 0x40 +#define DA9063_EVENT_B_E_VDD_WARN 0x80 +#define DA9063_EVENT_C 0x08 +#define DA9063_EVENT_C_E_GPI0 0x01 +#define DA9063_EVENT_C_E_GPI1 0x02 +#define DA9063_EVENT_C_E_GPI2 0x04 +#define DA9063_EVENT_C_E_GPI3 0x08 +#define DA9063_EVENT_C_E_GPI4 0x10 +#define DA9063_EVENT_C_E_GPI5 0x20 +#define DA9063_EVENT_C_E_GPI6 0x40 +#define DA9063_EVENT_C_E_GPI7 0x80 +#define DA9063_EVENT_D 0x09 +#define DA9063_EVENT_D_E_GPI8 0x01 +#define DA9063_EVENT_D_E_GPI9 0x02 +#define DA9063_EVENT_D_E_GPI10 0x04 +#define DA9063_EVENT_D_E_GPI11 0x08 +#define DA9063_EVENT_D_E_GPI12 0x10 +#define DA9063_EVENT_D_E_GPI13 0x20 +#define DA9063_EVENT_D_E_GPI14 0x40 +#define DA9063_EVENT_D_E_GPI15 0x80 +#define DA9063_IRQ_MASK_A 0x0a +#define DA9063_IRQ_MASK_A_M_NONKEY 0x01 +#define DA9063_IRQ_MASK_A_M_ALARM 0x02 +#define DA9063_IRQ_MASK_A_M_TICK 0x04 +#define DA9063_IRQ_MASK_A_M_ADC_RDY 0x08 +#define DA9063_IRQ_MASK_A_M_SEQ_RDY 0x10 +#define DA9063_IRQ_MASK_B 0x0b +#define DA9063_IRQ_MASK_B_M_WAKE 0x01 +#define DA9063_IRQ_MASK_B_M_TEMP 0x02 +#define DA9063_IRQ_MASK_B_M_COMP_1V2 0x04 +#define DA9063_IRQ_MASK_B_M_LDO_LIM 0x08 +#define DA9063_IRQ_MASK_B_M_REG_UVOV 0x10 +#define DA9063_IRQ_MASK_B_M_DVC_RDY 0x20 +#define DA9063_IRQ_MASK_B_M_VDD_MON 0x40 +#define DA9063_IRQ_MASK_B_M_VDD_WARN 0x80 +#define DA9063_IRQ_MASK_C 0x0c +#define DA9063_IRQ_MASK_C_M_GPI0 0x01 +#define DA9063_IRQ_MASK_C_M_GPI1 0x02 +#define DA9063_IRQ_MASK_C_M_GPI2 0x04 +#define DA9063_IRQ_MASK_C_M_GPI3 0x08 +#define DA9063_IRQ_MASK_C_M_GPI4 0x10 +#define DA9063_IRQ_MASK_C_M_GPI5 0x20 +#define DA9063_IRQ_MASK_C_M_GPI6 0x40 +#define DA9063_IRQ_MASK_C_M_GPI7 0x80 +#define DA9063_IRQ_MASK_D 0x0d +#define DA9063_IRQ_MASK_D_M_GPI8 0x01 +#define DA9063_IRQ_MASK_D_M_GPI9 0x02 +#define DA9063_IRQ_MASK_D_M_GPI10 0x04 +#define DA9063_IRQ_MASK_D_M_GPI11 0x08 +#define DA9063_IRQ_MASK_D_M_GPI12 0x10 +#define DA9063_IRQ_MASK_D_M_GPI13 0x20 +#define DA9063_IRQ_MASK_D_M_GPI14 0x40 +#define DA9063_IRQ_MASK_D_M_GPI15 0x80 +#define DA9063_CONTROL_A 0x0e +#define DA9063_CONTROL_A_SYSTEM_EN 0x01 +#define DA9063_CONTROL_A_POWER_EN 0x02 +#define DA9063_CONTROL_A_POWER1_EN 0x04 +#define DA9063_CONTROL_A_STANDBY 0x08 +#define DA9063_CONTROL_A_M_SYSTEM_EN 0x10 +#define DA9063_CONTROL_A_M_POWER_EN 0x20 +#define DA9063_CONTROL_A_M_POWER1_EN 0x40 +#define DA9063_CONTROL_A_CP_EN 0x80 +#define DA9063_CONTROL_B 0x0f +#define DA9063_CONTROL_B_CHG_SEL 0x01 +#define DA9063_CONTROL_B_WATCHDOG_DIS 0x02 +#define DA9063_CONTROL_B_RESET_GLINKING 0x04 +#define DA9063_CONTROL_B_NRES_MODE 0x08 +#define DA9063_CONTROL_B_NONKEY_LOCK 0x10 +#define DA9063_CONTROL_B_BUCK_SLOWSTART 0x80 +#define DA9063_CONTROL_C 0x10 +#define DA9063_CONTROL_C_DEBOUNCING_SHIFT 0 +#define DA9063_CONTROL_C_DEBOUNCING_MASK 0x07 +#define DA9063_CONTROL_C_AUTO_BOOT 0x08 +#define DA9063_CONTROL_C_OTPREAD_EN 0x10 +#define DA9063_CONTROL_C_SLEW_RATE_SHIFT 5 +#define DA9063_CONTROL_C_SLEW_RATE_MASK 0x03 +#define DA9063_CONTROL_C_DEF_SUPPLY 0x80 +#define DA9063_CONTROL_D 0x11 +#define DA9063_CONTROL_D_TWDSCALE_SHIFT 0 +#define DA9063_CONTROL_D_TWDSCALE_MASK 0x07 +#define DA9063_CONTROL_D_BLINK_FRQ_SHIFT 3 +#define DA9063_CONTROL_D_BLINK_FRQ_MASK 0x07 +#define DA9063_CONTROL_D_BLINK_DUR_SHIFT 2 +#define DA9063_CONTROL_D_BLINK_DUR_MASK 0x03 +#define DA9063_CONTROL_E 0x12 +#define DA9063_CONTROL_E_RTC_MODE_PD 0x01 +#define DA9063_CONTROL_E_RTC_MODE_SD 0x02 +#define DA9063_CONTROL_E_RTC_EN 0x04 +#define DA9063_CONTROL_E_ECO_MODE 0x08 +#define DA9063_CONTROL_E_PM_FB1_PIN 0x10 +#define DA9063_CONTROL_E_PM_FB2_PIN 0x20 +#define DA9063_CONTROL_E_PM_FB3_PIN 0x40 +#define DA9063_CONTROL_E_V_LOCK 0x80 +#define DA9063_CONTROL_F 0x13 +#define DA9063_CONTROL_F_WATCHDOG 0x01 +#define DA9063_CONTROL_F_SHUTDOWN 0x02 +#define DA9063_CONTROL_F_WAKE_UP 0x04 +#define DA9063_PD_DIS 0x14 +#define DA9063_PD_DIS_GPI_DIS 0x01 +#define DA9063_PD_DIS_GPADC_PAUSE 0x02 +#define DA9063_PD_DIS_PMIF_DIS 0x04 +#define DA9063_PD_DIS_HS2IF_DIS 0x08 +#define DA9063_PD_DIS_BBAT_DIS 0x20 +#define DA9063_PD_DIS_OUT32K_PAUSE 0x40 +#define DA9063_PD_DIS_PMCONT_DIS 0x80 + +/* GPIO Control Registers (GPIO) */ + +#define DA9063_GPIO0_1 0x15 +#define DA9063_GPIO0_1_GPIO0_PIN_SHIFT 0 +#define DA9063_GPIO0_1_GPIO0_PIN_MASK 0x03 +#define DA9063_GPIO0_1_GPIO0_TYPE 0x04 +#define DA9063_GPIO0_1_GPIO0_WEN 0x08 +#define DA9063_GPIO0_1_GPIO1_PIN_SHIFT 4 +#define DA9063_GPIO0_1_GPIO1_PIN_MASK 0x03 +#define DA9063_GPIO0_1_GPIO1_TYPE 0x40 +#define DA9063_GPIO0_1_GPIO1_WEN 0x80 +#define DA9063_GPIO2_3 0x16 +#define DA9063_GPIO2_3_GPIO2_PIN_SHIFT 0 +#define DA9063_GPIO2_3_GPIO2_PIN_MASK 0x03 +#define DA9063_GPIO2_3_GPIO2_TYPE 0x04 +#define DA9063_GPIO2_3_GPIO2_WEN 0x08 +#define DA9063_GPIO2_3_GPIO3_PIN_SHIFT 4 +#define DA9063_GPIO2_3_GPIO3_PIN_MASK 0x03 +#define DA9063_GPIO2_3_GPIO3_TYPE 0x40 +#define DA9063_GPIO2_3_GPIO3_WEN 0x80 +#define DA9063_GPIO4_5 0x17 +#define DA9063_GPIO4_5_GPIO4_PIN_SHIFT 0 +#define DA9063_GPIO4_5_GPIO4_PIN_MASK 0x03 +#define DA9063_GPIO4_5_GPIO4_TYPE 0x04 +#define DA9063_GPIO4_5_GPIO4_WEN 0x08 +#define DA9063_GPIO4_5_GPIO5_PIN_SHIFT 4 +#define DA9063_GPIO4_5_GPIO5_PIN_MASK 0x03 +#define DA9063_GPIO4_5_GPIO5_TYPE 0x04 +#define DA9063_GPIO4_5_GPIO5_WEN 0x08 +#define DA9063_GPIO6_7 0x18 +#define DA9063_GPIO6_7_GPIO6_PIN_SHIFT 0 +#define DA9063_GPIO6_7_GPIO6_PIN_MASK 0x03 +#define DA9063_GPIO6_7_GPIO6_TYPE 0x04 +#define DA9063_GPIO6_7_GPIO6_WEN 0x08 +#define DA9063_GPIO6_7_GPIO7_PIN_SHIFT 4 +#define DA9063_GPIO6_7_GPIO7_PIN_MASK 0x03 +#define DA9063_GPIO6_7_GPIO7_TYPE 0x04 +#define DA9063_GPIO6_7_GPIO7_WEN 0x08 +#define DA9063_GPIO8_9 0x19 +#define DA9063_GPIO8_9_GPIO8_PIN_SHIFT 0 +#define DA9063_GPIO8_9_GPIO8_PIN_MASK 0x03 +#define DA9063_GPIO8_9_GPIO8_TYPE 0x04 +#define DA9063_GPIO8_9_GPIO8_WEN 0x08 +#define DA9063_GPIO8_9_GPIO9_PIN_SHIFT 4 +#define DA9063_GPIO8_9_GPIO9_PIN_MASK 0x03 +#define DA9063_GPIO8_9_GPIO9_TYPE 0x04 +#define DA9063_GPIO8_9_GPIO9_WEN 0x08 +#define DA9063_GPIO10_11 0x1a +#define DA9063_GPIO10_11_GPIO10_PIN_SHIFT 0 +#define DA9063_GPIO10_11_GPIO10_PIN_MASK 0x03 +#define DA9063_GPIO10_11_GPIO10_TYPE 0x04 +#define DA9063_GPIO10_11_GPIO10_WEN 0x08 +#define DA9063_GPIO10_11_GPIO11_PIN_SHIFT 4 +#define DA9063_GPIO10_11_GPIO11_PIN_MASK 0x03 +#define DA9063_GPIO10_11_GPIO11_TYPE 0x04 +#define DA9063_GPIO10_11_GPIO11_WEN 0x08 +#define DA9063_GPIO12_13 0x1b +#define DA9063_GPIO12_13_GPIO12_PIN_SHIFT 0 +#define DA9063_GPIO12_13_GPIO12_PIN_MASK 0x03 +#define DA9063_GPIO12_13_GPIO12_TYPE 0x04 +#define DA9063_GPIO12_13_GPIO12_WEN 0x08 +#define DA9063_GPIO12_13_GPIO13_PIN_SHIFT 4 +#define DA9063_GPIO12_13_GPIO13_PIN_MASK 0x03 +#define DA9063_GPIO12_13_GPIO13_TYPE 0x04 +#define DA9063_GPIO12_13_GPIO13_WEN 0x08 +#define DA9063_GPIO14_15 0x1c +#define DA9063_GPIO14_15_GPIO14_PIN_SHIFT 0 +#define DA9063_GPIO14_15_GPIO14_PIN_MASK 0x03 +#define DA9063_GPIO14_15_GPIO14_TYPE 0x04 +#define DA9063_GPIO14_15_GPIO14_WEN 0x08 +#define DA9063_GPIO14_15_GPIO15_PIN_SHIFT 4 +#define DA9063_GPIO14_15_GPIO15_PIN_MASK 0x03 +#define DA9063_GPIO14_15_GPIO15_TYPE 0x04 +#define DA9063_GPIO14_15_GPIO15_WEN 0x08 +#define DA9063_GPIO_MODE0_7 0x1d +#define DA9063_GPIO_MODE0_7_GPIO0_MASK 0x01 +#define DA9063_GPIO_MODE0_7_GPIO1_MASK 0x02 +#define DA9063_GPIO_MODE0_7_GPIO2_MASK 0x04 +#define DA9063_GPIO_MODE0_7_GPIO3_MASK 0x08 +#define DA9063_GPIO_MODE0_7_GPIO4_MASK 0x10 +#define DA9063_GPIO_MODE0_7_GPIO5_MASK 0x20 +#define DA9063_GPIO_MODE0_7_GPIO6_MASK 0x40 +#define DA9063_GPIO_MODE0_7_GPIO7_MASK 0x80 +#define DA9063_GPIO_MODE8_15 0x1e +#define DA9063_GPIO_MODE8_15_GPIO8_MASK 0x01 +#define DA9063_GPIO_MODE8_15_GPIO9_MASK 0x02 +#define DA9063_GPIO_MODE8_15_GPIO10_MASK 0x04 +#define DA9063_GPIO_MODE8_15_GPIO11_MASK 0x08 +#define DA9063_GPIO_MODE8_15_GPIO12_MASK 0x10 +#define DA9063_GPIO_MODE8_15_GPIO13_MASK 0x20 +#define DA9063_GPIO_MODE8_15_GPIO14_MASK 0x40 +#define DA9063_GPIO_MODE8_15_GPIO15_MASK 0x80 +#define DA9063_SWITCH_CONT 0x1f +#define DA9063_SWITCH_CONT_CORE_SW_GPI_SHIFT 0 +#define DA9063_SWITCH_CONT_CORE_SW_GPI_MASK 0x03 +#define DA9063_SWITCH_CONT_PERI_SW_GPI_SHIFT 2 +#define DA9063_SWITCH_CONT_PERI_SW_GPI_MASK 0x03 +#define DA9063_SWITCH_CONT_SWITCH_SR_SHIFT 4 +#define DA9063_SWITCH_CONT_SWITCH_SR_MASK 0x03 +#define DA9063_SWITCH_CONT_CORE_SW_INT 0x40 +#define DA9063_SWITCH_CONT_CP_EN_MODE 0x80 + +/* Regulator Control Registers (REG) */ + +#define DA9063_BCORE2_CONT 0x20 +#define DA9063_BCORE2_CONT_BCORE2_EN 0x01 +#define DA9063_BCORE2_CONT_BCORE2_GPI_SHIFT 1 +#define DA9063_BCORE2_CONT_BCORE2_GPI_MASK 0x03 +#define DA9063_BCORE2_CONT_BCORE2_CONF 0x08 +#define DA9063_BCORE2_CONT_VBCORE2_GPI_SHIFT 5 +#define DA9063_BCORE2_CONT_VBCORE2_GPI_MASK 0x03 +#define DA9063_BCORE1_CONT 0x21 +#define DA9063_BCORE1_CONT_BCORE1_EN 0x01 +#define DA9063_BCORE1_CONT_BCORE1_GPI_SHIFT 1 +#define DA9063_BCORE1_CONT_BCORE1_GPI_MASK 0x03 +#define DA9063_BCORE1_CONT_BCORE1_CONF 0x08 +#define DA9063_BCORE1_CONT_CORE_SW_EN 0x10 +#define DA9063_BCORE1_CONT_VBCORE1_GPI_SHIFT 5 +#define DA9063_BCORE1_CONT_VBCORE1_GPI_MASK 0x03 +#define DA9063_BCORE1_CONT_CORE_SW_CONF 0x80 +#define DA9063_BPRO_CONT 0x22 +#define DA9063_BPRO_CONT_BPRO_EN 0x01 +#define DA9063_BPRO_CONT_BPRO_GPI_SHIFT 1 +#define DA9063_BPRO_CONT_BPRO_GPI_MASK 0x03 +#define DA9063_BPRO_CONT_BPRO_CONF 0x08 +#define DA9063_BPRO_CONT_VBPRO_GPI_SHIFT 5 +#define DA9063_BPRO_CONT_VBPRO_GPI_MASK 0x03 +#define DA9063_BMEM_CONT 0x23 +#define DA9063_BMEM_CONT_BMEM_EN 0x01 +#define DA9063_BMEM_CONT_BMEM_GPI_SHIFT 1 +#define DA9063_BMEM_CONT_BMEM_GPI_MASK 0x03 +#define DA9063_BMEM_CONT_BMEM_CONF 0x08 +#define DA9063_BMEM_CONT_VBMEM_GPI_SHIFT 5 +#define DA9063_BMEM_CONT_VBMEM_GPI_MASK 0x03 +#define DA9063_BIO_CONT 0x24 +#define DA9063_BIO_CONT_BIO_EN 0x01 +#define DA9063_BIO_CONT_BIO_GPI_SHIFT 1 +#define DA9063_BIO_CONT_BIO_GPI_MASK 0x03 +#define DA9063_BIO_CONT_BIO_CONF 0x08 +#define DA9063_BIO_CONT_VBIO_GPI_SHIFT 5 +#define DA9063_BIO_CONT_VBIO_GPI_MASK 0x03 +#define DA9063_BPERI_CONT 0x25 +#define DA9063_BPERI_CONT_BPERI_EN 0x01 +#define DA9063_BPERI_CONT_BPERI_GPI_SHIFT 1 +#define DA9063_BPERI_CONT_BPERI_GPI_MASK 0x03 +#define DA9063_BPERI_CONT_BPERI_CONF 0x08 +#define DA9063_BPERI_CONT_PERI_SW_EN 0x10 +#define DA9063_BPERI_CONT_VBPERI_GPI_SHIFT 5 +#define DA9063_BPERI_CONT_VBPERI_GPI_MASK 0x03 +#define DA9063_BPERI_CONT_PERI_SW_CONF 0x80 +#define DA9063_LDO1_CONT 0x26 +#define DA9063_LDO1_CONT_LDO1_EN 0x01 +#define DA9063_LDO1_CONT_LDO1_GPI_SHIFT 1 +#define DA9063_LDO1_CONT_LDO1_GPI_MASK 0x03 +#define DA9063_LDO1_CONT_LDO1_PD_DIS 0x08 +#define DA9063_LDO1_CONT_VLDO1_GPI_SHIFT 5 +#define DA9063_LDO1_CONT_VLDO1_GPI_MASK 0x03 +#define DA9063_LDO1_CONT_VLDO1_CONF 0x80 +#define DA9063_LDO2_CONT 0x27 +#define DA9063_LDO2_CONT_LDO2_EN 0x01 +#define DA9063_LDO2_CONT_LDO2_GPI_SHIFT 1 +#define DA9063_LDO2_CONT_LDO2_GPI_MASK 0x03 +#define DA9063_LDO2_CONT_LDO2_PD_DIS 0x08 +#define DA9063_LDO2_CONT_VLDO2_GPI_SHIFT 5 +#define DA9063_LDO2_CONT_VLDO2_GPI_MASK 0x03 +#define DA9063_LDO2_CONT_VLDO2_CONF 0x80 +#define DA9063_LDO3_CONT 0x28 +#define DA9063_LDO3_CONT_LDO3_EN 0x01 +#define DA9063_LDO3_CONT_LDO3_GPI_SHIFT 1 +#define DA9063_LDO3_CONT_LDO3_GPI_MASK 0x03 +#define DA9063_LDO3_CONT_LDO3_PD_DIS 0x08 +#define DA9063_LDO3_CONT_VLDO3_GPI_SHIFT 5 +#define DA9063_LDO3_CONT_VLDO3_GPI_MASK 0x03 +#define DA9063_LDO3_CONT_VLDO3_CONF 0x80 +#define DA9063_LDO4_CONT 0x29 +#define DA9063_LDO4_CONT_LDO4_EN 0x01 +#define DA9063_LDO4_CONT_LDO4_GPI_SHIFT 1 +#define DA9063_LDO4_CONT_LDO4_GPI_MASK 0x03 +#define DA9063_LDO4_CONT_LDO4_PD_DIS 0x08 +#define DA9063_LDO4_CONT_VLDO4_SEL 0x10 +#define DA9063_LDO4_CONT_VLDO4_GPI_SHIFT 5 +#define DA9063_LDO4_CONT_VLDO4_GPI_MASK 0x03 +#define DA9063_LDO4_CONT_VLDO4_CONF 0x80 +#define DA9063_LDO5_CONT 0x2a +#define DA9063_LDO5_CONT_LDO5_EN 0x01 +#define DA9063_LDO5_CONT_LDO5_GPI_SHIFT 1 +#define DA9063_LDO5_CONT_LDO5_GPI_MASK 0x03 +#define DA9063_LDO5_CONT_LDO5_PD_DIS 0x08 +#define DA9063_LDO5_CONT_VLDO5_SEL 0x10 +#define DA9063_LDO5_CONT_VLDO5_GPI_SHIFT 5 +#define DA9063_LDO5_CONT_VLDO5_GPI_MASK 0x03 +#define DA9063_LDO5_CONT_VLDO5_CONF 0x80 +#define DA9063_LDO6_CONT 0x2b +#define DA9063_LDO6_CONT_LDO6_EN 0x01 +#define DA9063_LDO6_CONT_LDO6_GPI_SHIFT 1 +#define DA9063_LDO6_CONT_LDO6_GPI_MASK 0x03 +#define DA9063_LDO6_CONT_LDO6_PD_DIS 0x08 +#define DA9063_LDO6_CONT_VLDO6_SEL 0x10 +#define DA9063_LDO6_CONT_VLDO6_GPI_SHIFT 5 +#define DA9063_LDO6_CONT_VLDO6_GPI_MASK 0x03 +#define DA9063_LDO6_CONT_VLDO6_CONF 0x80 +#define DA9063_LDO7_CONT 0x2c +#define DA9063_LDO7_CONT_LDO7_EN 0x01 +#define DA9063_LDO7_CONT_LDO7_GPI_SHIFT 1 +#define DA9063_LDO7_CONT_LDO7_GPI_MASK 0x03 +#define DA9063_LDO7_CONT_LDO7_PD_DIS 0x08 +#define DA9063_LDO7_CONT_VLDO7_SEL 0x10 +#define DA9063_LDO7_CONT_VLDO7_GPI_SHIFT 5 +#define DA9063_LDO7_CONT_VLDO7_GPI_MASK 0x03 +#define DA9063_LDO7_CONT_VLDO7_CONF 0x80 +#define DA9063_LDO8_CONT 0x2d +#define DA9063_LDO8_CONT_LDO8_EN 0x01 +#define DA9063_LDO8_CONT_LDO8_GPI_SHIFT 1 +#define DA9063_LDO8_CONT_LDO8_GPI_MASK 0x03 +#define DA9063_LDO8_CONT_LDO8_PD_DIS 0x08 +#define DA9063_LDO8_CONT_VLDO8_SEL 0x10 +#define DA9063_LDO8_CONT_VLDO8_GPI_SHIFT 5 +#define DA9063_LDO8_CONT_VLDO8_GPI_MASK 0x03 +#define DA9063_LDO8_CONT_VLDO8_CONF 0x80 +#define DA9063_LDO9_CONT 0x2e +#define DA9063_LDO9_CONT_LDO9_EN 0x01 +#define DA9063_LDO9_CONT_LDO9_GPI_SHIFT 1 +#define DA9063_LDO9_CONT_LDO9_GPI_MASK 0x03 +#define DA9063_LDO9_CONT_LDO9_PD_DIS 0x08 +#define DA9063_LDO9_CONT_VLDO9_SEL 0x10 +#define DA9063_LDO9_CONT_VLDO9_GPI_SHIFT 5 +#define DA9063_LDO9_CONT_VLDO9_GPI_MASK 0x03 +#define DA9063_LDO9_CONT_VLDO9_CONF 0x80 +#define DA9063_LDO10_CONT 0x2f +#define DA9063_LDO10_CONT_LDO10_EN 0x01 +#define DA9063_LDO10_CONT_LDO10_GPI_SHIFT 1 +#define DA9063_LDO10_CONT_LDO10_GPI_MASK 0x03 +#define DA9063_LDO10_CONT_LDO10_PD_DIS 0x08 +#define DA9063_LDO10_CONT_VLDO10_SEL 0x10 +#define DA9063_LDO10_CONT_VLDO10_GPI_SHIFT 5 +#define DA9063_LDO10_CONT_VLDO10_GPI_MASK 0x03 +#define DA9063_LDO10_CONT_VLDO10_CONF 0x80 +#define DA9063_LDO11_CONT 0x30 +#define DA9063_LDO11_CONT_LDO11_EN 0x01 +#define DA9063_LDO11_CONT_LDO11_GPI_SHIFT 1 +#define DA9063_LDO11_CONT_LDO11_GPI_MASK 0x03 +#define DA9063_LDO11_CONT_LDO11_PD_DIS 0x08 +#define DA9063_LDO11_CONT_VLDO11_SEL 0x10 +#define DA9063_LDO11_CONT_VLDO11_GPI_SHIFT 5 +#define DA9063_LDO11_CONT_VLDO11_GPI_MASK 0x03 +#define DA9063_LDO11_CONT_VLDO11_CONF 0x80 +#define DA9063_VIB 0x31 +#define DA9063_VIB_VIB_SET_SHIFT 0 +#define DA9063_VIB_VIB_SET_MASK 0x3f +#define DA9063_DVC_1 0x32 +#define DA9063_DVC_1_VBCORE1_SEL 0x01 +#define DA9063_DVC_1_VBCORE2_SEL 0x02 +#define DA9063_DVC_1_VBPRO_SEL 0x04 +#define DA9063_DVC_1_VBMEM_SEL 0x08 +#define DA9063_DVC_1_VBPERI_SEL 0x10 +#define DA9063_DVC_1_VLDO1_SEL 0x20 +#define DA9063_DVC_1_VLDO2_SEL 0x40 +#define DA9063_DVC_1_VLDO3_SEL 0x80 +#define DA9063_DVC_2 0x33 +#define DA9063_DVC_2_VBIO_SEL 0x01 +#define DA9063_DVC_2_VLDO4_SEL 0x80 + +/* GP-ADC Control Registers (GPADC) */ + +#define DA9063_ADC_MAN 0x34 +#define DA9063_ADC_MAN_ADC_MUX_SHIFT 0 +#define DA9063_ADC_MAN_ADC_MUX_MASK 0x0f +#define DA9063_ADC_MAN_ADC_MAN 0x10 +#define DA9063_ADC_MAN_ADC_MODE 0x20 +#define DA9063_ADC_CONT 0x35 +#define DA9063_ADC_CONT_AUTO_VSYS_EN 0x01 +#define DA9063_ADC_CONT_AUTO_AD1_EN 0x02 +#define DA9063_ADC_CONT_AUTO_AD2_EN 0x04 +#define DA9063_ADC_CONT_AUTO_AD3_EN 0x08 +#define DA9063_ADC_CONT_AD1_ISRC_EN 0x10 +#define DA9063_ADC_CONT_AD2_ISRC_EN 0x20 +#define DA9063_ADC_CONT_AD3_ISRC_EN 0x40 +#define DA9063_ADC_CONT_COMP1V2_EN 0x80 +#define DA9063_VSYS_MON 0x36 +#define DA9063_VSYS_MON_VSYS_MON_SHIFT 0 +#define DA9063_VSYS_MON_VSYS_MON_MASK 0xff +#define DA9063_ADC_RES_L 0x37 +#define DA9063_ADC_RES_L_ADC_RES_LSB_SHIFT 6 +#define DA9063_ADC_RES_L_ACD_RES_LSB_MASK 0x03 +#define DA9063_ADC_RES_H 0x38 +#define DA9063_ADC_RES_H_ADC_RES_H_SHIFT 0 +#define DA9063_ADC_RES_H_ADC_RES_H_MASK 0xff +#define DA9063_VSYS_RES 0x39 +#define DA9063_VSYS_RES_VSYS_RES_SHIFT 0 +#define DA9063_VSYS_RES_VSYS_RES_MASK 0xff +#define DA9063_ADCIN1_RES 0x3a +#define DA9063_ADCIN1_RES_ADCIN1_RES_SHIFT 0 +#define DA9063_ADCIN1_RES_ADCIN1_RES_MASK 0xff +#define DA9063_ADCIN2_RES 0x3b +#define DA9063_ADCIN2_RES_ADCIN2_RES_SHIFT 0 +#define DA9063_ADCIN2_RES_ADCIN2_RES_MASK 0xff +#define DA9063_ADCIN3_RES 0x3c +#define DA9063_ADCIN3_RES_ADCIN3_RES_SHIFT 0 +#define DA9063_ADCIN3_RES_ADCIN3_RES_MASK 0xff +#define DA9063_MON_A8_RES 0x3d +#define DA9063_MON_A8_RES_MON_A8_RES_SHIFT 0 +#define DA9063_MON_A8_RES_MON_A8_RES_MASK 0xff +#define DA9063_MON_A9_RES 0x3e +#define DA9063_MON_A9_RES_MON_A9_RES_SHIFT 0 +#define DA9063_MON_A9_RES_MON_A9_RES_MASK 0xff +#define DA9063_MON_A10_RES 0x3f +#define DA9063_MON_A10_RES_MON_A10_RES_SHIFT 0 +#define DA9063_MON_A10_RES_MON_A10_RES_MASK 0xff + +/* RTC Calendar and Alarm Registers (RTC) */ + +#define DA9063_COUNT_S 0x40 +#define DA9063_COUNT_S_COUNT_SEC_SHIFT 0 +#define DA9063_COUNT_S_COUNT_SEC_MASK 0x3f +#define DA9063_COUNT_S_RTC_READ 0x80 +#define DA9063_COUNT_MI 0x41 +#define DA9063_COUNT_MI_COUNT_MIN_SHIFT 0 +#define DA9063_COUNT_MI_COUNT_MIN_MASK 0x3f +#define DA9063_COUNT_H 0x42 +#define DA9063_COUNT_H_COUNT_HOUR_SHIFT 0 +#define DA9063_COUNT_H_COUNT_HOUR_MASK 0x1f +#define DA9063_COUNT_D 0x43 +#define DA9063_COUNT_D_COUNT_DAY_SHIFT 0 +#define DA9063_COUNT_D_COUNT_DAY_MASK 0x1f +#define DA9063_COUNT_MO 0x44 +#define DA9063_COUNT_MO_COUNT_MONTH_SHIFT 0 +#define DA9063_COUNT_MO_COUNT_MONTH_MASK 0x0f +#define DA9063_COUNT_Y 0x45 +#define DA9063_COUNT_Y_COUNT_YEAR_SHIFT 0 +#define DA9063_COUNT_Y_COUNT_YEAR_MASK 0x3f +#define DA9063_COUNT_Y_MONITOR 0x40 +#define DA9063_ALARM_S 0x46 +#define DA9063_ALARM_S_ALARM_SEC_SHIFT 0 +#define DA9063_ALARM_S_ALARM_SEC_MASK 0x3f +#define DA9063_ALARM_S_ALARM_TYPE_SHIFT 6 +#define DA9063_ALARM_S_ALARM_TYPE_MASK 0x03 +#define DA9063_ALARM_MI 0x47 +#define DA9063_ALARM_MI_ALARM_MIN_SHIFT 0 +#define DA9063_ALARM_MI_ALARM_MIN_MASK 0x3f +#define DA9063_ALARM_H 0x48 +#define DA9063_ALARM_H_ALARM_HOUR_SHIFT 0 +#define DA9063_ALARM_H_ALARM_HOUR_MASK 0x1f +#define DA9063_ALARM_D 0x49 +#define DA9063_ALARM_D_ALARM_DAY_SHIFT 0 +#define DA9063_ALARM_D_ALARM_DAY_MASK 0x1f +#define DA9063_ALARM_MO 0x4a +#define DA9063_ALARM_MO_ALARM_MONTH_SHIFT 0 +#define DA9063_ALARM_MO_ALARM_MONTH_MASK 0x0f +#define DA9063_ALARM_MO_TICK_TYPE 0x10 +#define DA9063_ALARM_MO_TICK_WAKE 0x20 +#define DA9063_ALARM_Y 0x4b +#define DA9063_ALARM_Y_ALARM_YEAR_SHIFT 0 +#define DA9063_ALARM_Y_ALARM_YEAR_MASK 0x3f +#define DA9063_ALARM_Y_ALARM_ON 0x40 +#define DA9063_ALARM_Y_TICK_ON 0x80 + +/* System Control and Event Registers (SYSMON) */ + +#define DA9063_SECOND_A 0x4c +#define DA9063_SECOND_A_SECONDS_A_SHIFT 0 +#define DA9063_SECOND_A_SECONDS_A_MASK 0xff +#define DA9063_SECOND_B 0x4d +#define DA9063_SECOND_B_SECONDS_B_SHIFT 0 +#define DA9063_SECOND_B_SECONDS_B_MASK 0xff +#define DA9063_SECOND_C 0x4e +#define DA9063_SECOND_C_SECONDS_C_SHIFT 0 +#define DA9063_SECOND_C_SECONDS_C_MASK 0xff +#define DA9063_SECOND_D 0x4f +#define DA9063_SECOND_D_SECONDS_D_SHIFT 0 +#define DA9063_SECOND_D_SECONDS_D_MASK 0xff + +/* Page 1 */ + +/* 0x80 is PAGE_CON */ + +/* Sequencer Control Registers (SEQ) */ + +#define DA9063_SEQ 0x81 +#define DA9063_SEQ_SEQ_POINTER_SHIFT 0 +#define DA9063_SEQ_SEQ_POINTER_MASK 0x0f +#define DA9063_SEQ_NXT_SEQ_START_SHIFT 4 +#define DA9063_SEQ_NXT_SEQ_START_MASK 0x0f +#define DA9063_SEQ_TIMER 0x82 +#define DA9063_SEQ_TIMER_SEQ_TIME_SHIFT 0 +#define DA9063_SEQ_TIMER_SEQ_TIME_MASK 0x0f +#define DA9063_SEQ_TIMER_SEQ_DUMM_SHIFT 4 +#define DA9063_SEQ_TIMER_SEQ_DUMM_MASK 0x0f +#define DA9063_ID_2_1 0x83 +#define DA9063_ID_2_1_LDO1_STEP_SHIFT 0 +#define DA9063_ID_2_1_LDO1_STEP_MASK 0x0f +#define DA9063_ID_2_1_LDO2_STEP_SHIFT 4 +#define DA9063_ID_2_1_LDO2_STEP_MASK 0x0f +#define DA9063_ID_4_3 0x84 +#define DA9063_ID_4_3_LDO3_STEP_SHIFT 0 +#define DA9063_ID_4_3_LDO3_STEP_MASK 0x0f +#define DA9063_ID_4_3_LDO4_STEP_SHIFT 4 +#define DA9063_ID_4_3_LDO4_STEP_MASK 0x0f +#define DA9063_ID_6_5 0x85 +#define DA9063_ID_6_5_LDO5_STEP_SHIFT 0 +#define DA9063_ID_6_5_LDO5_STEP_MASK 0x0f +#define DA9063_ID_6_5_LDO6_STEP_SHIFT 4 +#define DA9063_ID_6_5_LDO6_STEP_MASK 0x0f +#define DA9063_ID_8_7 0x86 +#define DA9063_ID_8_7_LDO7_STEP_SHIFT 0 +#define DA9063_ID_8_7_LDO7_STEP_MASK 0x0f +#define DA9063_ID_8_7_LDO8_STEP_SHIFT 4 +#define DA9063_ID_8_7_LDO8_STEP_MASK 0x0f +#define DA9063_ID_10_9 0x87 +#define DA9063_ID_10_9_LDO9_STEP_SHIFT 0 +#define DA9063_ID_10_9_LDO9_STEP_MASK 0x0f +#define DA9063_ID_10_9_LDO10_STEP_SHIFT 4 +#define DA9063_ID_10_9_LDO10_STEP_MASK 0x0f +#define DA9063_ID_12_11 0x88 +#define DA9063_ID_12_11_LDO11_STEP_SHIFT 0 +#define DA9063_ID_12_11_LDO11_STEP_MASK 0x0f +#define DA9063_ID_12_11_PD_DIS_STEP_SHIFT 4 +#define DA9063_ID_12_11_PD_DIS_STEP_MASK 0x0f +#define DA9063_ID_14_13 0x89 +#define DA9063_ID_14_13_BUCKCORE1_STEP_SHIFT 0 +#define DA9063_ID_14_13_BUCKCORE1_STEP_MASK 0x0f +#define DA9063_ID_14_13_BUCKCORE2_STEP_SHIFT 4 +#define DA9063_ID_14_13_BUCKCORE2_STEP_MASK 0x0f +#define DA9063_ID_16_15 0x8a +#define DA9063_ID_16_15_BUCKPRO_STEP_SHIFT 0 +#define DA9063_ID_16_15_BUCKPRO_STEP_MASK 0x0f +#define DA9063_ID_16_15_BUCKIO_STEP_SHIFT 4 +#define DA9063_ID_16_15_BUCKIO_STEP_MASK 0x0f +#define DA9063_ID_18_17 0x8b +#define DA9063_ID_18_17_BUCKMEM_STEP_SHIFT 0 +#define DA9063_ID_18_17_BUCKMEM_STEP_MASK 0x0f +#define DA9063_ID_18_17_BUCKPERI_STEP_SHIFT 4 +#define DA9063_ID_18_17_BUCKPERI_STEP_MASK 0x0f +#define DA9063_ID_20_19 0x8c +#define DA9063_ID_20_19_CORE_SW_STEP_SHIFT 0 +#define DA9063_ID_20_19_CORE_SW_STEP_MASK 0x0f +#define DA9063_ID_20_19_PERI_SW_STEP_SHIFT 4 +#define DA9063_ID_20_19_PERI_SW_STEP_MASK 0x0f +#define DA9063_ID_22_21 0x8d +#define DA9063_ID_22_21_GP_RISE1_STEP_SHIFT 0 +#define DA9063_ID_22_21_GP_RISE1_STEP_MASK 0x0f +#define DA9063_ID_22_21_GP_FALL1_STEP_SHIFT 4 +#define DA9063_ID_22_21_GP_FALL1_STEP_MASK 0x0f +#define DA9063_ID_24_23 0x8e +#define DA9063_ID_24_23_GP_RISE2_STEP_SHIFT 0 +#define DA9063_ID_24_23_GP_RISE2_STEP_MASK 0x0f +#define DA9063_ID_24_23_GP_FALL2_STEP_SHIFT 4 +#define DA9063_ID_24_23_GP_FALL2_STEP_MASK 0x0f +#define DA9063_ID_26_25 0x8f +#define DA9063_ID_26_25_GP_RISE3_STEP_SHIFT 0 +#define DA9063_ID_26_25_GP_RISE3_STEP_MASK 0x0f +#define DA9063_ID_26_25_GP_FALL3_STEP_SHIFT 4 +#define DA9063_ID_26_25_GP_FALL3_STEP_MASK 0x0f +#define DA9063_ID_28_27 0x90 +#define DA9063_ID_28_27_GP_RISE4_STEP_SHIFT 0 +#define DA9063_ID_28_27_GP_RISE4_STEP_MASK 0x0f +#define DA9063_ID_28_27_GP_FALL4_STEP_SHIFT 4 +#define DA9063_ID_28_27_GP_FALL4_STEP_MASK 0x0f +#define DA9063_ID_30_29 0x91 +#define DA9063_ID_30_29_GP_RISE5_STEP_SHIFT 0 +#define DA9063_ID_30_29_GP_RISE5_STEP_MASK 0x0f +#define DA9063_ID_30_29_GP_FALL5_STEP_SHIFT 4 +#define DA9063_ID_30_29_GP_FALL5_STEP_MASK 0x0f +#define DA9063_ID_32_31 0x92 +#define DA9063_ID_32_31_WAIT_STEP_SHIFT 0 +#define DA9063_ID_32_31_WAIT_STEP_MASK 0x0f +#define DA9063_ID_32_31_EN32K_STEP_SHIFT 4 +#define DA9063_ID_32_31_EN32K_STEP_MASK 0x0f +/* 0x93 - 0x94 reserved */ +#define DA9063_SEQ_A 0x95 +#define DA9063_SEQ_A_SYSTEM_END_SHIFT 0 +#define DA9063_SEQ_A_SYSTEM_END_MASK 0x0f +#define DA9063_SEQ_A_POWER_END_SHIFT 4 +#define DA9063_SEQ_A_POWER_END_MASK 0x0f +#define DA9063_SEQ_B 0x96 +#define DA9063_SEQ_B_MAX_COUNT_SHIFT 0 +#define DA9063_SEQ_B_MAX_COUNT_MASK 0x0f +#define DA9063_SEQ_B_PART_DOWN_SHIFT 4 +#define DA9063_SEQ_B_PART_DOWN_MASK 0x0f +#define DA9063_WAIT 0x97 +#define DA9063_WAIT_WAIT_TIME_SHIFT 0 +#define DA9063_WAIT_WAIT_TIME_MASK 0x0f +#define DA9063_WAIT_WAIT_MODE 0x10 +#define DA9063_WAIT_TIME_OUT 0x20 +#define DA9063_WAIT_WAIT_DIR_SHIFT 6 +#define DA9063_WAIT_WAIT_DIR_MASK 0x03 +#define DA9063_EN_32K 0x98 +#define DA9063_EN_32K_STABILIZATION_TIME_SHIFT 0 +#define DA9063_EN_32K_STABILIZATION_TIME_MASK 0x07 +#define DA9063_EN_32K_CRYSTAL 0x04 +#define DA9063_EN_32K_DELAY_MODE 0x10 +#define DA9063_EN_32K_OUT_CLOCK 0x20 +#define DA9063_EN_32K_RTC_CLOCK 0x40 +#define DA9063_EN_32K_OUT_32K_EN 0x80 +#define DA9063_RESET 0x99 +#define DA9063_RESET_RESET_TIMER_SHIFT 0 +#define DA9063_RESET_RESET_TIMER_MASK 0x3f +#define DA9063_RESET_RESET_EVENT_SHIFT 6 +#define DA9063_RESET_RESET_EVENT_MASK 0x03 + +/* Regulator Setting Registers (REG) */ + +#define DA9063_BUCK_ILIM_A 0x9a +#define DA9063_BUCK_ILIM_A_BIO_ILIM_SHIFT 0 +#define DA9063_BUCK_ILIM_A_BIO_ILIM_MASK 0x0f +#define DA9063_BUCK_ILIM_A_BMEM_ILIM_SHIFT 4 +#define DA9063_BUCK_ILIM_A_BMEM_ILIM_MASK 0x0f +#define DA9063_BUCK_ILIM_B 0x9b +#define DA9063_BUCK_ILIM_B_BPRO_ILIM_SHIFT 0 +#define DA9063_BUCK_ILIM_B_BPRO_ILIM_MASK 0x0f +#define DA9063_BUCK_ILIM_B_BPERI_ILIM_SHIFT 4 +#define DA9063_BUCK_ILIM_B_BPERI_ILIM_MASK 0x0f +#define DA9063_BUCK_ILIM_C 0x9c +#define DA9063_BUCK_ILIM_C_BCORE1_ILIM_SHIFT 0 +#define DA9063_BUCK_ILIM_C_BCORE1_ILIM_MASK 0x0f +#define DA9063_BUCK_ILIM_C_BCORE2_ILIM_SHIFT 4 +#define DA9063_BUCK_ILIM_C_BCORE2_ILIM_MASK 0x0f +#define DA9063_BCORE2_CONF 0x9d +#define DA9063_BCORE2_CONF_BCORE2_FB_SHIFT 0 +#define DA9063_BCORE2_CONF_BCORE2_FB_MASK 0x07 +#define DA9063_BCORE2_CONF_BCORE2_PD_DIS 0x20 +#define DA9063_BCORE2_CONF_BCORE2_MODE_SHIFT 6 +#define DA9063_BCORE2_CONF_BCORE2_MODE_MASK 0x03 +#define DA9063_BCORE1_CONF 0x9e +#define DA9063_BCORE1_CONF_BCORE1_FB_SHIFT 0 +#define DA9063_BCORE1_CONF_BCORE1_FB_MASK 0x07 +#define DA9063_BCORE1_CONF_BCORE1_PD_DIS 0x20 +#define DA9063_BCORE1_CONF_BCORE1_MODE_SHIFT 6 +#define DA9063_BCORE1_CONF_BCORE1_MODE_MASK 0x03 +#define DA9063_BPRO_CONF 0x9f +#define DA9063_BPRO_CONF_BPRO_FB_SHIFT 0 +#define DA9063_BPRO_CONF_BPRO_FB_MASK 0x07 +#define DA9063_BPRO_CONF_BPRO_PD_DIS 0x20 +#define DA9063_BPRO_CONF_BPRO_MODE_SHIFT 6 +#define DA9063_BPRO_CONF_BPRO_MODE_MASK 0x03 +#define DA9063_BIO_CONF 0xa0 +#define DA9063_BIO_CONF_BIO_FB_SHIFT 0 +#define DA9063_BIO_CONF_BIO_FB_MASK 0x07 +#define DA9063_BIO_CONF_BPRO_VTTR_EN 0x08 +#define DA9063_BIO_CONF_BPRO_VTT_EN 0x10 +#define DA9063_BIO_CONF_BIO_PD_DIS 0x20 +#define DA9063_BIO_CONF_BIO_MODE_SHIFT 6 +#define DA9063_BIO_CONF_BIO_MODE_MASK 0x03 +#define DA9063_BMEM_CONF 0xa1 +#define DA9063_BMEM_CONF_BMEM_FB_SHIFT 0 +#define DA9063_BMEM_CONF_BMEM_FB_MASK 0x07 +#define DA9063_BMEM_CONF_BMEM_PD_DIS 0x20 +#define DA9063_BMEM_CONF_BMEM_MODE_SHIFT 6 +#define DA9063_BMEM_CONF_BMEM_MODE_MASK 0x03 +#define DA9063_BPERI_CONF 0xa2 +#define DA9063_BPERI_CONF_BPERI_FB_SHIFT 0 +#define DA9063_BPERI_CONF_BPERI_FB_MASK 0x07 +#define DA9063_BPERI_CONF_BPERI_PD_DIS 0x20 +#define DA9063_BPERI_CONF_BPERI_MODE_SHIFT 6 +#define DA9063_BPERI_CONF_BPERI_MODE_MASK 0x03 +#define DA9063_VBCORE2_A 0xa3 +#define DA9063_VBCORE2_A_VBCORE2_A_SHIFT 0 +#define DA9063_VBCORE2_A_VBCORE2_A_MASK 0x7f +#define DA9063_VBCORE2_A_BCORE2_SL_A 0x80 +#define DA9063_VBCORE1_A 0xa4 +#define DA9063_VBCORE1_A_VBCORE1_A_SHIFT 0 +#define DA9063_VBCORE1_A_VBCORE1_A_MASK 0x7f +#define DA9063_VBCORE1_A_BCORE1_SL_A 0x80 +#define DA9063_VBPRO_A 0xa5 +#define DA9063_VBPRO_A_VBPRO_A_SHIFT 0 +#define DA9063_VBPRO_A_VBPRO_A_MASK 0x7f +#define DA9063_VBPRO_A_BPRO_SL_A 0x80 +#define DA9063_VBMEM_A 0xa6 +#define DA9063_VBMEM_A_VBMEM_A_SHIFT 0 +#define DA9063_VBMEM_A_VBMEM_A_MASK 0x7f +#define DA9063_VBMEM_A_BMEM_SL_A 0x80 +#define DA9063_VBIO_A 0xa7 +#define DA9063_VBIO_A_VBIO_A_SHIFT 0 +#define DA9063_VBIO_A_VBIO_A_MASK 0x7f +#define DA9063_VBIO_A_BIO_SL_A 0x80 +#define DA9063_VBPERI_A 0xa8 +#define DA9063_VBPERI_A_VBPERI_A_SHIFT 0 +#define DA9063_VBPERI_A_VBPERI_A_MASK 0x7f +#define DA9063_VBPERI_A_BPERI_SL_A 0x80 +#define DA9063_VLDO1_A 0xa9 +#define DA9063_VLDO1_A_VLDO1_A_SHIFT 0 +#define DA9063_VLDO1_A_VLDO1_A_MASK 0x3f +#define DA9063_VLDO1_A_LDO1_SL_A 0x80 +#define DA9063_VLDO2_A 0xaa +#define DA9063_VLDO2_A_VLDO2_A_SHIFT 0 +#define DA9063_VLDO2_A_VLDO2_A_MASK 0x3f +#define DA9063_VLDO2_A_LDO2_SL_A 0x80 +#define DA9063_VLDO3_A 0xab +#define DA9063_VLDO3_A_VLDO3_A_SHIFT 0 +#define DA9063_VLDO3_A_VLDO3_A_MASK 0x7f +#define DA9063_VLDO3_A_LDO3_SL_A 0x80 +#define DA9063_VLDO4_A 0xac +#define DA9063_VLDO4_A_VLDO4_A_SHIFT 0 +#define DA9063_VLDO4_A_VLDO4_A_MASK 0x7f +#define DA9063_VLDO4_A_LDO4_SL_A 0x80 +#define DA9063_VLDO5_A 0xad +#define DA9063_VLDO5_A_VLDO5_A_SHIFT 0 +#define DA9063_VLDO5_A_VLDO5_A_MASK 0x3f +#define DA9063_VLDO5_A_LDO5_SL_A 0x80 +#define DA9063_VLDO6_A 0xae +#define DA9063_VLDO6_A_VLDO6_A_SHIFT 0 +#define DA9063_VLDO6_A_VLDO6_A_MASK 0x3f +#define DA9063_VLDO6_A_LDO6_SL_A 0x80 +#define DA9063_VLDO7_A 0xaf +#define DA9063_VLDO7_A_VLDO7_A_SHIFT 0 +#define DA9063_VLDO7_A_VLDO7_A_MASK 0x3f +#define DA9063_VLDO7_A_LDO7_SL_A 0x80 +#define DA9063_VLDO8_A 0xb0 +#define DA9063_VLDO8_A_VLDO8_A_SHIFT 0 +#define DA9063_VLDO8_A_VLDO8_A_MASK 0x3f +#define DA9063_VLDO8_A_LDO8_SL_A 0x80 +#define DA9063_VLDO9_A 0xb1 +#define DA9063_VLDO9_A_VLDO9_A_SHIFT 0 +#define DA9063_VLDO9_A_VLDO9_A_MASK 0x3f +#define DA9063_VLDO9_A_LDO9_SL_A 0x80 +#define DA9063_VLDO10_A 0xb2 +#define DA9063_VLDO10_A_VLDO10_A_SHIFT 0 +#define DA9063_VLDO10_A_VLDO10_A_MASK 0x3f +#define DA9063_VLDO10_A_LDO10_SL_A 0x80 +#define DA9063_VLDO11_A 0xb3 +#define DA9063_VLDO11_A_VLDO11_A_SHIFT 0 +#define DA9063_VLDO11_A_VLDO11_A_MASK 0x3f +#define DA9063_VLDO11_A_LDO11_SL_A 0x80 +#define DA9063_VBCORE2_B 0xb4 +#define DA9063_VBCORE2_B_VBCORE2_B_SHIFT 0 +#define DA9063_VBCORE2_B_VBCORE2_B_MASK 0x7f +#define DA9063_VBCORE2_B_BCORE2_SL_B 0x80 +#define DA9063_VBCORE1_B 0xb5 +#define DA9063_VBCORE1_B_VBCORE1_B_SHIFT 0 +#define DA9063_VBCORE1_B_VBCORE1_B_MASK 0x7f +#define DA9063_VBCORE1_B_BCORE1_SL_B 0x80 +#define DA9063_VBPRO_B 0xb6 +#define DA9063_VBPRO_B_VBPRO_B_SHIFT 0 +#define DA9063_VBPRO_B_VBPRO_B_MASK 0x7f +#define DA9063_VBPRO_B_BPRO_SL_B 0x80 +#define DA9063_VBMEM_B 0xb7 +#define DA9063_VBMEM_B_VBMEM_B_SHIFT 0 +#define DA9063_VBMEM_B_VBMEM_B_MASK 0x7f +#define DA9063_VBMEM_B_BMEM_SL_B 0x80 +#define DA9063_VBIO_B 0xb8 +#define DA9063_VBIO_B_VBIO_B_SHIFT 0 +#define DA9063_VBIO_B_VBIO_B_MASK 0x7f +#define DA9063_VBIO_B_BIO_SL_B 0x80 +#define DA9063_VBPERI_B 0xb9 +#define DA9063_VBPERI_B_VBPERI_B_SHIFT 0 +#define DA9063_VBPERI_B_VBPERI_B_MASK 0x7f +#define DA9063_VBPERI_B_BPERI_SL_B 0x80 +#define DA9063_VLDO1_B 0xba +#define DA9063_VLDO1_B_VLDO1_B_SHIFT 0 +#define DA9063_VLDO1_B_VLDO1_B_MASK 0x3f +#define DA9063_VLDO1_B_LDO1_SL_B 0x80 +#define DA9063_VLDO2_B 0xbb +#define DA9063_VLDO2_B_VLDO2_B_SHIFT 0 +#define DA9063_VLDO2_B_VLDO2_B_MASK 0x3f +#define DA9063_VLDO2_B_LDO2_SL_B 0x80 +#define DA9063_VLDO3_B 0xbc +#define DA9063_VLDO3_B_VLDO3_B_SHIFT 0 +#define DA9063_VLDO3_B_VLDO3_B_MASK 0x7f +#define DA9063_VLDO3_B_LDO3_SL_B 0x80 +#define DA9063_VLDO4_B 0xbd +#define DA9063_VLDO4_B_VLDO4_B_SHIFT 0 +#define DA9063_VLDO4_B_VLDO4_B_MASK 0x7f +#define DA9063_VLDO4_B_LDO4_SL_B 0x80 +#define DA9063_VLDO5_B 0xbe +#define DA9063_VLDO5_B_VLDO5_B_SHIFT 0 +#define DA9063_VLDO5_B_VLDO5_B_MASK 0x7f +#define DA9063_VLDO5_B_LDO5_SL_B 0x80 +#define DA9063_VLDO6_B 0xbf +#define DA9063_VLDO6_B_VLDO6_B_SHIFT 0 +#define DA9063_VLDO6_B_VLDO6_B_MASK 0x7f +#define DA9063_VLDO6_B_LDO6_SL_B 0x80 +#define DA9063_VLDO7_B 0xc0 +#define DA9063_VLDO7_B_VLDO7_B_SHIFT 0 +#define DA9063_VLDO7_B_VLDO7_B_MASK 0x7f +#define DA9063_VLDO7_B_LDO7_SL_B 0x80 +#define DA9063_VLDO8_B 0xc1 +#define DA9063_VLDO8_B_VLDO8_B_SHIFT 0 +#define DA9063_VLDO8_B_VLDO8_B_MASK 0x7f +#define DA9063_VLDO8_B_LDO8_SL_B 0x80 +#define DA9063_VLDO9_B 0xc2 +#define DA9063_VLDO9_B_VLDO9_B_SHIFT 0 +#define DA9063_VLDO9_B_VLDO9_B_MASK 0x7f +#define DA9063_VLDO9_B_LDO9_SL_B 0x80 +#define DA9063_VLDO10_B 0xc3 +#define DA9063_VLDO10_B_VLDO10_B_SHIFT 0 +#define DA9063_VLDO10_B_VLDO10_B_MASK 0x7f +#define DA9063_VLDO10_B_LDO10_SL_B 0x80 +#define DA9063_VLDO11_B 0xc4 +#define DA9063_VLDO11_B_VLDO11_B_SHIFT 0 +#define DA9063_VLDO11_B_VLDO11_B_MASK 0x7f +#define DA9063_VLDO11_B_LDO11_SL_B 0x80 + +/* Backup Battery Charger Control Register (BBAT) */ + +#define DA9063_BBAT_CONT 0xc5 +#define DA9063_BBAT_CONT_BCHG_VSET_SHIFT 0 +#define DA9063_BBAT_CONT_BCHG_VSET_MASK 0x0f +#define DA9063_BBAT_CONT_BCHG_ISET_SHIFT 4 +#define DA9063_BBAT_CONT_BCHG_ISET_MASK 0x0f + +/* GPO PWM (LED) */ + +#define DA9063_GPO11_LED 0xc6 +#define DA9063_GPO11_LED_GPO11_PWM_SHIFT 0 +#define DA9063_GPO11_LED_GPO11_PWM_MASK 0x7f +#define DA9063_GPO11_LED_GPO11_DIM 0x80 +#define DA9063_GPO14_LED 0xc7 +#define DA9063_GPO14_LED_GPO14_PWM_SHIFT 0 +#define DA9063_GPO14_LED_GPO14_PWM_MASK 0x7f +#define DA9063_GPO14_LED_GPO14_DIM 0x80 +#define DA9063_GPO15_LED 0xc8 +#define DA9063_GPO15_LED_GPO15_PWM_SHIFT 0 +#define DA9063_GPO15_LED_GPO15_PWM_MASK 0x7f +#define DA9063_GPO15_LED_GPO15_DIM 0x80 + +/* GP-ADC Threshold Registers (GPADC) */ + +#define DA9063_ADC_CFG 0xc9 +#define DA9063_ADC_CFG_ADCIN1_CUR_SHIFT 0 +#define DA9063_ADC_CFG_ADCIN1_CUR_MASK 0x03 +#define DA9063_ADC_CFG_ADCIN2_CUR_SHIFT 2 +#define DA9063_ADC_CFG_ADCIN2_CUR_MASK 0x03 +#define DA9063_ADC_CFG_ADCIN3_CUR 0x10 +#define DA9063_ADC_CFG_ADCIN1_DEB 0x20 +#define DA9063_ADC_CFG_ADCIN2_DEB 0x40 +#define DA9063_ADC_CFG_ADCIN3_DEB 0x80 +#define DA9063_AUTO1_HIGH 0xca +#define DA9063_AUTO1_HIGH_AUTO1_HIGH_SHIFT 0 +#define DA9063_AUTO1_HIGH_AUTO1_HIGH_MASK 0xff +#define DA9063_AUTO1_LOW 0xcb +#define DA9063_AUTO1_LOW_AUTO1_LOW_SHIFT 0 +#define DA9063_AUTO1_LOW_AUTO1_LOW_MASK 0xff +#define DA9063_AUTO2_HIGH 0xcc +#define DA9063_AUTO2_HIGH_AUTO2_HIGH_SHIFT 0 +#define DA9063_AUTO2_HIGH_AUTO2_HIGH_MASK 0xff +#define DA9063_AUTO2_LOW 0xcd +#define DA9063_AUTO2_LOW_AUTO2_LOW_SHIFT 0 +#define DA9063_AUTO2_LOW_AUTO2_LOW_MASK 0xff +#define DA9063_AUTO3_HIGH 0xce +#define DA9063_AUTO3_HIGH_AUTO3_HIGH_SHIFT 0 +#define DA9063_AUTO3_HIGH_AUTO3_HIGH_MASK 0xff +#define DA9063_AUTO3_LOW 0xcf +#define DA9063_AUTO3_LOW_AUTO3_LOW_SHIFT 0 +#define DA9063_AUTO3_LOW_AUTO3_LOW_MASK 0xff + +/* Page 2 */ + +/* 0x100 is PAGE_CON */ + +/* OTP */ + +#define DA9063_OTP_CONT 0x101 +#define DA9063_OTP_CONT_OTP_TIM 0x01 +#define DA9063_OTP_CONT_OTP_GP_RD 0x02 +#define DA9063_OTP_CONT_OTP_APPS_RD 0x04 +#define DA9063_OTP_CONT_PC_DONE 0x08 +#define DA9063_OTP_CONT_OTP_GP_LOCK 0x10 +#define DA9063_OTP_CONT_OTP_APPS_LOCK 0x20 +#define DA9063_OTP_CONT_OTP_CONF_LOCK 0x40 +#define DA9063_OTP_CONT_GP_WRITE_DIS 0x80 +#define DA9063_OTP_ADDR 0x102 +#define DA9063_OTP_ADDR_OTP_ADDR_SHIFT 0 +#define DA9063_OTP_ADDR_OTP_ADDR_MASK 0xff +#define DA9063_OTP_DATA 0x103 +#define DA9063_OTP_DATA_OTP_DATA_SHIFT 0 +#define DA9063_OTP_DATA_OTP_DATA_MASK 0xff + +/* Customer Trim and Configuration Registers */ + +#define DA9063_T_OFFSET 0x104 +#define DA9063_T_OFFSET_T_OFFSET_SHIFT 0 +#define DA9063_T_OFFSET_T_OFFSET_MASK 0xff +#define DA9063_INTERFACE 0x105 +#define DA9063_INTERFACE_NCS_POL 0x01 +#define DA9063_INTERFACE_CPOL 0x02 +#define DA9063_INTERFACE_CPHA 0x04 +#define DA9063_INTERFACE_RW_POL 0x08 +#define DA9063_INTERFACE_IF_BASE_ADDR_SHIFT 4 +#define DA9063_INTERFACE_IF_BASE_ADDR_MASK 0x0f +#define DA9063_CONFIG_A 0x106 +#define DA9063_CONFIG_A_PM_I_V 0x01 +#define DA9063_CONFIG_A_PM_O_V 0x02 +#define DA9063_CONFIG_A_PM_O_TYPE 0x04 +#define DA9063_CONFIG_A_IRQ_TYPE 0x08 +#define DA9063_CONFIG_A_PM_IF_V 0x10 +#define DA9063_CONFIG_A_PM_IF_FMP 0x20 +#define DA9063_CONFIG_A_PM_IF_HSM 0x40 +#define DA9063_CONFIG_A_IF_TYPE 0x80 +#define DA9063_CONFIG_B 0x107 +#define DA9063_CONFIG_B_VDD_FAULT_ADJ_SHIFT 0 +#define DA9063_CONFIG_B_VDD_FAULT_ADJ_MASK 0x0f +#define DA9063_CONFIG_B_VDD_HYST_ADJ_SHIFT 4 +#define DA9063_CONFIG_B_VDD_HYST_ADJ_MASK 0x07 +#define DA9063_CONFIG_B_CHG_CLK_MODE 0x80 +#define DA9063_CONFIG_C 0x108 +#define DA9063_CONFIG_C_LDO1_TRACK_SHIFT 0 +#define DA9063_CONFIG_C_LDO1_TRACK_MASK 0x03 +#define DA9063_CONFIG_C_BUCK_ACTV_DISCH 0x04 +#define DA9063_CONFIG_C_BCORE1_CLK_INV 0x08 +#define DA9063_CONFIG_C_BPRO_CLK_INV 0x10 +#define DA9063_CONFIG_C_BMEM_CLK_INV 0x20 +#define DA9063_CONFIG_C_BIO_CLK_INV 0x40 +#define DA9063_CONFIG_C_BPERI_CLK_INV 0x80 +#define DA9063_CONFIG_D 0x109 +#define DA9063_CONFIG_D_GPI_V 0x01 +#define DA9063_CONFIG_D_NIRQ_MODE 0x02 +#define DA9063_CONFIG_D_SYSTEM_EN_RD 0x04 +#define DA9063_CONFIG_D_HS_IF_FMP 0x08 +#define DA9063_CONFIG_D_HS_IF_HSM 0x10 +#define DA9063_CONFIG_D_FORCE_RESET 0x20 +#define DA9063_CONFIG_D_GP_FB2_TYPE 0x40 +#define DA9063_CONFIG_D_GP_FB3_TYPE 0x80 +#define DA9063_CONFIG_E 0x10a +#define DA9063_CONFIG_E_BCORE1_AUTO 0x01 +#define DA9063_CONFIG_E_BCORE2_AUTO 0x02 +#define DA9063_CONFIG_E_BPRO_AUTO 0x04 +#define DA9063_CONFIG_E_BMEM_AUTO 0x08 +#define DA9063_CONFIG_E_BIO_AUTO 0x10 +#define DA9063_CONFIG_E_BPERI_AUTO 0x20 +#define DA9063_CONFIG_E_CORE_SW_AUTO 0x40 +#define DA9063_CONFIG_E_PERI_SW_AUTO 0x80 +#define DA9063_CONFIG_F 0x10b +#define DA9063_CONFIG_F_LDO9_AUTO 0x01 +#define DA9063_CONFIG_F_LDO10_AUTO 0x02 +#define DA9063_CONFIG_F_LDO11_AUTO 0x04 +#define DA9063_CONFIG_F_LDO3_BYP 0x08 +#define DA9063_CONFIG_F_LDO4_BYP 0x10 +#define DA9063_CONFIG_F_LDO7_BYP 0x20 +#define DA9063_CONFIG_F_LDO8_BYP 0x40 +#define DA9063_CONFIG_F_LDO11_BYP 0x80 +#define DA9063_CONFIG_G 0x10c +#define DA9063_CONFIG_G_LDO1_AUTO 0x01 +#define DA9063_CONFIG_G_LDO2_AUTO 0x02 +#define DA9063_CONFIG_G_LDO3_AUTO 0x04 +#define DA9063_CONFIG_G_LDO4_AUTO 0x08 +#define DA9063_CONFIG_G_LDO5_AUTO 0x10 +#define DA9063_CONFIG_G_LDO6_AUTO 0x20 +#define DA9063_CONFIG_G_LDO7_AUTO 0x40 +#define DA9063_CONFIG_G_LDO8_AUTO 0x80 +#define DA9063_CONFIG_H 0x10d +#define DA9063_CONFIG_H_PWM_CLK 0x01 +#define DA9063_CONFIG_H_LDO8_MODE 0x02 +#define DA9063_CONFIG_H_MERGE_SENSE 0x04 +#define DA9063_CONFIG_H_BCORE_MERGE 0x08 +#define DA9063_CONFIG_H_BPRO_OD 0x10 +#define DA9063_CONFIG_H_BCORE2_OD 0x20 +#define DA9063_CONFIG_H_BCORE1_OD 0x40 +#define DA9063_CONFIG_H_BUCK_MERGE 0x80 +#define DA9063_CONFIG_I 0x10e +#define DA9063_CONFIG_I_NONKEY_PIN_SHIFT 0 +#define DA9063_CONFIG_I_NONKEY_PIN_MASK 0x03 +#define DA9063_CONFIG_I_NONKEY_SD 0x04 +#define DA9063_CONFIG_I_GPI14_15_SD 0x08 +#define DA9063_CONFIG_I_KEY_SD_MODE 0x10 +#define DA9063_CONFIG_I_HOST_SD_MODE 0x20 +#define DA9063_CONFIG_I_INT_SD_MODE 0x40 +#define DA9063_CONFIG_I_LDO_SD 0x80 +#define DA9063_CONFIG_J 0x10f +#define DA9063_CONFIG_J_KEY_DELAY_SHIFT 0 +#define DA9063_CONFIG_J_KEY_DELAY_MASK 0x03 +#define DA9063_CONFIG_J_SHUT_DELAY_SHIFT 2 +#define DA9063_CONFIG_J_SHUT_DELAY_MASK 0x03 +#define DA9063_CONFIG_J_RESET_DURATION_SHIFT 4 +#define DA9063_CONFIG_J_RESET_DURATION_MASK 0x03 +#define DA9063_CONFIG_J_TWOWIRE_TO 0x40 +#define DA9063_CONFIG_J_IF_RESET 0x80 +#define DA9063_CONFIG_K 0x110 +#define DA9063_CONFIG_K_GPIO0_PUD 0x01 +#define DA9063_CONFIG_K_GPIO1_PUD 0x02 +#define DA9063_CONFIG_K_GPIO2_PUD 0x04 +#define DA9063_CONFIG_K_GPIO3_PUD 0x08 +#define DA9063_CONFIG_K_GPIO4_PUD 0x10 +#define DA9063_CONFIG_K_GPIO5_PUD 0x20 +#define DA9063_CONFIG_K_GPIO6_PUD 0x40 +#define DA9063_CONFIG_K_GPIO7_PUD 0x80 +#define DA9063_CONFIG_L 0x111 +#define DA9063_CONFIG_L_GPIO8_PUD 0x01 +#define DA9063_CONFIG_L_GPIO9_PUD 0x02 +#define DA9063_CONFIG_L_GPIO10_PUD 0x04 +#define DA9063_CONFIG_L_GPIO11_PUD 0x08 +#define DA9063_CONFIG_L_GPIO12_PUD 0x10 +#define DA9063_CONFIG_L_GPIO13_PUD 0x20 +#define DA9063_CONFIG_L_GPIO14_PUD 0x40 +#define DA9063_CONFIG_L_GPIO15_PUD 0x80 +#define DA9063_CONFIG_M 0x112 +#define DA9063_CONFIG_M_OSC_FREQ_SHIFT 6 +#define DA9063_CONFIG_M_OSC_FREQ_MASK 0x03 +#define DA9063_CONFIG_N 0x113 +/* CONFIG_N entirely reserved */ +#define DA9063_MON_REG_1 0x114 +#define DA9063_MON_REG_1_MON_THRES_SHIFT 0 +#define DA9063_MON_REG_1_MON_THRES_MASK 0x03 +#define DA9063_MON_REG_1_MON_RES 0x40 +#define DA9063_MON_REG_1_MON_DEB 0x80 +#define DA9063_MON_REG_1_MON_MODE_SHIFT 4 +#define DA9063_MON_REG_1_MON_MODE_MASK 0x03 +#define DA9063_MON_REG_1_UVOV_DELAY_SHIFT 6 +#define DA9063_MON_REG_1_UVOV_DELAY_MASK 0x03 +#define DA9063_MON_REG_2 0x115 +#define DA9063_MON_REG_2_LDO1_MON_EN 0x01 +#define DA9063_MON_REG_2_LDO2_MON_EN 0x02 +#define DA9063_MON_REG_2_LDO3_MON_EN 0x04 +#define DA9063_MON_REG_2_LDO4_MON_EN 0x08 +#define DA9063_MON_REG_2_LDO5_MON_EN 0x10 +#define DA9063_MON_REG_2_LDO6_MON_EN 0x20 +#define DA9063_MON_REG_2_LDO7_MON_EN 0x40 +#define DA9063_MON_REG_2_LDO8_MON_EN 0x80 +#define DA9063_MON_REG_3 0x116 +#define DA9063_MON_REG_3_LDO9_MON_EN 0x01 +#define DA9063_MON_REG_3_LDO10_MON_EN 0x02 +#define DA9063_MON_REG_3_LDO11_MON_EN 0x04 +#define DA9063_MON_REG_4 0x117 +#define DA9063_MON_REG_4_BCORE1_MON_EN 0x01 +#define DA9063_MON_REG_4_BCORE2_MON_EN 0x02 +#define DA9063_MON_REG_4_BPRO_MON_EN 0x04 +#define DA9063_MON_REG_4_BIO_MON_EN 0x08 +#define DA9063_MON_REG_4_BMEM_MON_EN 0x10 +#define DA9063_MON_REG_4_BPERI_MON_EN 0x20 +/* 0x118 - 0x11d reserved */ +#define DA9063_MON_REG_5 0x11e +#define DA9063_MON_REG_5_MONA8_IDX_SHIFT 0 +#define DA9063_MON_REG_5_MONA8_IDX_MASK 0x07 +#define DA9063_MON_REG_5_MONA9_IDX_SHIFT 4 +#define DA9063_MON_REG_5_MONA9_IDX_MASK 0x07 +#define DA9063_MON_REG_6 0x11f +#define DA9063_MON_REG_6_MONA10_IDX_SHIFT 0 +#define DA9063_MON_REG_6_MONA10_IDX_MASK 0x07 +#define DA9063_TRIM_CLDR 0x120 +#define DA9063_TRIM_CLDR_TRIM_CLDR_SHIFT 0 +#define DA9063_TRIM_CLDR_TRIM_CLDR_MASK 0xff + +/* General Purpose Registers (GP) */ + +#define DA9063_GP_ID_0 0x121 +#define DA9063_GP_ID_0_GP_0_SHIFT 0 +#define DA9063_GP_ID_0_GP_0_MASK 0xff +#define DA9063_GP_ID_1 0x122 +#define DA9063_GP_ID_1_GP_1_SHIFT 0 +#define DA9063_GP_ID_1_GP_1_MASK 0xff +#define DA9063_GP_ID_2 0x123 +#define DA9063_GP_ID_2_GP_2_SHIFT 0 +#define DA9063_GP_ID_2_GP_2_MASK 0xff +#define DA9063_GP_ID_3 0x124 +#define DA9063_GP_ID_3_GP_3_SHIFT 0 +#define DA9063_GP_ID_3_GP_3_MASK 0xff +#define DA9063_GP_ID_4 0x125 +#define DA9063_GP_ID_4_GP_4_SHIFT 0 +#define DA9063_GP_ID_4_GP_4_MASK 0xff +#define DA9063_GP_ID_5 0x126 +#define DA9063_GP_ID_5_GP_5_SHIFT 0 +#define DA9063_GP_ID_5_GP_5_MASK 0xff +#define DA9063_GP_ID_6 0x127 +#define DA9063_GP_ID_6_GP_6_SHIFT 0 +#define DA9063_GP_ID_6_GP_6_MASK 0xff +#define DA9063_GP_ID_7 0x128 +#define DA9063_GP_ID_7_GP_7_SHIFT 0 +#define DA9063_GP_ID_7_GP_7_MASK 0xff +#define DA9063_GP_ID_8 0x129 +#define DA9063_GP_ID_8_GP_8_SHIFT 0 +#define DA9063_GP_ID_8_GP_8_MASK 0xff +#define DA9063_GP_ID_9 0x12a +#define DA9063_GP_ID_9_GP_9_SHIFT 0 +#define DA9063_GP_ID_9_GP_9_MASK 0xff +#define DA9063_GP_ID_10 0x12b +#define DA9063_GP_ID_10_GP_10_SHIFT 0 +#define DA9063_GP_ID_10_GP_10_MASK 0xff +#define DA9063_GP_ID_11 0x12c +#define DA9063_GP_ID_11_GP_11_SHIFT 0 +#define DA9063_GP_ID_11_GP_11_MASK 0xff +/* 0x12d - 0x134 reserved */ + +/* Internal Debug Registers */ + +/* 0x135 - 0x13e reserved */ +#define DA9063_MISC_SUPP 0x13f +#define DA9063_MISC_SUPP_OTP_CLK_ON 0x1 +#define DA9063_MISC_SUPP_CRYSTAL_OK 0x2 + +/* Page 3 */ + +/* 0x180 is PAGE_CON */ + +/* Chip Identification Registers */ + +#define DA9063_DEVICE_ID 0x181 +#define DA9063_DEVICE_ID_DEVICE_ID_SHIFT 0 +#define DA9063_DEVICE_ID_DEVICE_ID_MASK 0xff +#define DA9063_VARIANT_ID 0x182 +#define DA9063_VARIANT_ID_VRC_SHIFT 0 +#define DA9063_VARIANT_ID_VRC_MASK 0x0f +#define DA9063_VARIANT_ID_MRC_SHIFT 4 +#define DA9063_VARIANT_ID_MRC_MASK 0x0f +#define DA9063_CUSTOMER_ID 0x183 +#define DA9063_CUSTOMER_ID_CUST_ID_SHIFT 0 +#define DA9063_CUSTOMER_ID_CUST_ID_MASK 0xff +#define DA9063_CONFIG_ID 0x184 +#define DA9063_CONFIG_ID_CONFIG_REV_SHIFT 0 +#define DA9063_CONFIG_ID_CONFIG_REV_MASK 0xff +#define DA9063_PMIC_STATUS 0x185 +#define DA9063_PMIC_STATUS_STATUS_SHIFT 0 +#define DA9063_PMIC_STATUS_STATUS_MASK 0x1f +#define DA9063_PMIC_STATUS_PC_DONE 0x80 + +#endif /* _DA9063_REG_H_ */