mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-27 02:15:34 +07:00
8e685483b0
This is MFD module providing access to registers and interrupts of DA906x series PMIC. It is used by other functional modules, registered as MFD cells. Driver uses regmap with paging to access extended register list. Register map is divided into two pages, where the second page is used during initialisation. This module provides support to following functional cells: - Regulators - RTC - HWMON - OnKey (power key misc input device) - Vibration (force-feedback input device) - Watchdog - LEDs Signed-off-by: Krystian Garbaciak <krystian.garbaciak@diasemi.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Mark Brown <broonie@linaro.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
112 lines
2.5 KiB
C
112 lines
2.5 KiB
C
/*
|
|
* Platform configuration options for DA9063
|
|
*
|
|
* Copyright 2012 Dialog Semiconductor Ltd.
|
|
*
|
|
* Author: Michal Hajduk <michal.hajduk@diasemi.com>
|
|
* Author: Krystian Garbaciak <krystian.garbaciak@diasemi.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
*/
|
|
|
|
#ifndef __MFD_DA9063_PDATA_H__
|
|
#define __MFD_DA9063_PDATA_H__
|
|
|
|
#include <linux/regulator/machine.h>
|
|
|
|
/*
|
|
* Regulator configuration
|
|
*/
|
|
/* DA9063 regulator IDs */
|
|
enum {
|
|
/* BUCKs */
|
|
DA9063_ID_BCORE1,
|
|
DA9063_ID_BCORE2,
|
|
DA9063_ID_BPRO,
|
|
DA9063_ID_BMEM,
|
|
DA9063_ID_BIO,
|
|
DA9063_ID_BPERI,
|
|
|
|
/* BCORE1 and BCORE2 in merged mode */
|
|
DA9063_ID_BCORES_MERGED,
|
|
/* BMEM and BIO in merged mode */
|
|
DA9063_ID_BMEM_BIO_MERGED,
|
|
/* When two BUCKs are merged, they cannot be reused separately */
|
|
|
|
/* LDOs */
|
|
DA9063_ID_LDO1,
|
|
DA9063_ID_LDO2,
|
|
DA9063_ID_LDO3,
|
|
DA9063_ID_LDO4,
|
|
DA9063_ID_LDO5,
|
|
DA9063_ID_LDO6,
|
|
DA9063_ID_LDO7,
|
|
DA9063_ID_LDO8,
|
|
DA9063_ID_LDO9,
|
|
DA9063_ID_LDO10,
|
|
DA9063_ID_LDO11,
|
|
};
|
|
|
|
/* Regulators platform data */
|
|
struct da9063_regulator_data {
|
|
int id;
|
|
struct regulator_init_data *initdata;
|
|
};
|
|
|
|
struct da9063_regulators_pdata {
|
|
unsigned n_regulators;
|
|
struct da9063_regulator_data *regulator_data;
|
|
};
|
|
|
|
|
|
/*
|
|
* RGB LED configuration
|
|
*/
|
|
/* LED IDs for flags in struct led_info. */
|
|
enum {
|
|
DA9063_GPIO11_LED,
|
|
DA9063_GPIO14_LED,
|
|
DA9063_GPIO15_LED,
|
|
|
|
DA9063_LED_NUM
|
|
};
|
|
#define DA9063_LED_ID_MASK 0x3
|
|
|
|
/* LED polarity for flags in struct led_info. */
|
|
#define DA9063_LED_HIGH_LEVEL_ACTIVE 0x0
|
|
#define DA9063_LED_LOW_LEVEL_ACTIVE 0x4
|
|
|
|
|
|
/*
|
|
* General PMIC configuration
|
|
*/
|
|
/* HWMON ADC channels configuration */
|
|
#define DA9063_FLG_FORCE_IN0_MANUAL_MODE 0x0010
|
|
#define DA9063_FLG_FORCE_IN0_AUTO_MODE 0x0020
|
|
#define DA9063_FLG_FORCE_IN1_MANUAL_MODE 0x0040
|
|
#define DA9063_FLG_FORCE_IN1_AUTO_MODE 0x0080
|
|
#define DA9063_FLG_FORCE_IN2_MANUAL_MODE 0x0100
|
|
#define DA9063_FLG_FORCE_IN2_AUTO_MODE 0x0200
|
|
#define DA9063_FLG_FORCE_IN3_MANUAL_MODE 0x0400
|
|
#define DA9063_FLG_FORCE_IN3_AUTO_MODE 0x0800
|
|
|
|
/* Disable register caching. */
|
|
#define DA9063_FLG_NO_CACHE 0x0008
|
|
|
|
struct da9063;
|
|
|
|
/* DA9063 platform data */
|
|
struct da9063_pdata {
|
|
int (*init)(struct da9063 *da9063);
|
|
int irq_base;
|
|
unsigned flags;
|
|
struct da9063_regulators_pdata *regulators_pdata;
|
|
struct led_platform_data *leds_pdata;
|
|
};
|
|
|
|
#endif /* __MFD_DA9063_PDATA_H__ */
|