| /* |
| * 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__ */ |