mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 07:05:12 +07:00
d7ab7302f9
- The ChromeOS embedded controller which provides keyboard, battery and power management services. This controller is accessible through i2c or SPI. - Silicon Laboratories 476x controller, providing access to their FM chipset and their audio codec. - Realtek's RTS5249, a memory stick, MMC and SD/SDIO PCI based reader. - Nokia's Tahvo power button and watchdog device. This device is very similar to Retu and is thus supported by the same code base. - STMicroelectronics STMPE1801, a keyboard and GPIO controller supported by the stmpe driver. - ST-Ericsson AB8540 and AB8505 power management and voltage converter controllers through the existing ab8500 code. Some other drivers got cleaned up or improved. In particular: - The Linaro/STE guys got the ab8500 driver in sync with their internal code through a series of optimizations, fixes and improvements. - The AS3711 and OMAP USB drivers now have DT support. - The arizona clock and interrupt handling code got improved. - The wm5102 register patch and boot mechanism also got improved. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJRhttxAAoJEIqAPN1PVmxKl6QP/ilyz2OnuZSJKAT+N3tt0EpR 6hFk0H6uSiHJ5aNyA22WGJq97R3jW9eGK9uD4AKCQ05l9UF/c5+YeXtmGHtxDLCb jBrErfB6GmEn1H2TzVK+Rp1WPAB/yoYHJosgGNCwohvuffhMiogSVHlI09EY4mQh 2Eo0RTN1UXKXSOZN+E7hb+GbIFzU8eOlEFdc2jh4qtfsvMDANbEByrZM6s0QFB31 LPn03uBL0+iwE8KW2144LKsfzeOos4JWbumyG9Lh6BugUSy1e/Zvv7aWNVeMvY8C 0+ZUk0bzRm9g7e3X4iYLPSboZt7J6DLaBlWXnUaOsJb+YRkUGh094ySdKojP3EiK 8SWSfH4EDwIANKC4zyXMcyny8OewySyrTTd0BTlbgHFyDmvmHk213crsCcilHzRb 3wrX0ETrk96Dkla4/e7IAyME+AbrglStHVGGf2hexlPm2nZdLsE8lfyo9yqjPqzy w49y7mpTA5PVE63szB1tI/58W2snZtXAEdQGjZmDQp29vDZaeR1t3W/IhKNG30JN SZGiX3H/6YS4MDZ48N709H83hM4V93XrHKsN59NjQe8NZ7AnSIfns9IgMciGBv7r aBE+Uwm9htK270Hvl5q8qDDnKaVGYOFlCq9qaeZ2k8NPyyRlQCRpJYjtSplYAnGr iLI0JdM32u3qdf5IT+Cw =Wq20 -----END PGP SIGNATURE----- Merge tag 'mfd-3.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-next Pull MFD update from Samuel Ortiz: "For 3.10 we have a few new MFD drivers for: - The ChromeOS embedded controller which provides keyboard, battery and power management services. This controller is accessible through i2c or SPI. - Silicon Laboratories 476x controller, providing access to their FM chipset and their audio codec. - Realtek's RTS5249, a memory stick, MMC and SD/SDIO PCI based reader. - Nokia's Tahvo power button and watchdog device. This device is very similar to Retu and is thus supported by the same code base. - STMicroelectronics STMPE1801, a keyboard and GPIO controller supported by the stmpe driver. - ST-Ericsson AB8540 and AB8505 power management and voltage converter controllers through the existing ab8500 code. Some other drivers got cleaned up or improved. In particular: - The Linaro/STE guys got the ab8500 driver in sync with their internal code through a series of optimizations, fixes and improvements. - The AS3711 and OMAP USB drivers now have DT support. - The arizona clock and interrupt handling code got improved. - The wm5102 register patch and boot mechanism also got improved." * tag 'mfd-3.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-next: (104 commits) mfd: si476x: Don't use 0bNNN mfd: vexpress: Handle pending config transactions mfd: ab8500: Export ab8500_gpadc_sw_hw_convert properly mfd: si476x: Fix i2c warning mfd: si476x: Add header files and Kbuild plumbing mfd: si476x: Add chip properties handling code mfd: si476x: Add the bulk of the core driver mfd: si476x: Add commands abstraction layer mfd: rtsx: Support RTS5249 mfd: retu: Add Tahvo support mfd: ucb1400: Pass ucb1400-gpio data through ac97 bus mfd: wm8994: Add some OF properties mfd: wm8994: Add device ID data to WM8994 OF device IDs input: Export matrix_keypad_parse_of_params() mfd: tps65090: Add compatible string for charger subnode mfd: db8500-prcmu: Support platform dependant device selection mfd: syscon: Fix warnings when printing resource_size_t of: Add stub of_get_parent for non-OF builds mfd: omap-usb-tll: Convert to devm_ioremap_resource() mfd: omap-usb-host: Convert to devm_ioremap_resource() ...
138 lines
3.5 KiB
C
138 lines
3.5 KiB
C
/*
|
|
* Core driver interface for TI TPS65090 PMIC family
|
|
*
|
|
* Copyright (C) 2012 NVIDIA Corporation
|
|
*
|
|
* 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.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef __LINUX_MFD_TPS65090_H
|
|
#define __LINUX_MFD_TPS65090_H
|
|
|
|
#include <linux/irq.h>
|
|
#include <linux/regmap.h>
|
|
|
|
/* TPS65090 IRQs */
|
|
enum {
|
|
TPS65090_IRQ_INTERRUPT,
|
|
TPS65090_IRQ_VAC_STATUS_CHANGE,
|
|
TPS65090_IRQ_VSYS_STATUS_CHANGE,
|
|
TPS65090_IRQ_BAT_STATUS_CHANGE,
|
|
TPS65090_IRQ_CHARGING_STATUS_CHANGE,
|
|
TPS65090_IRQ_CHARGING_COMPLETE,
|
|
TPS65090_IRQ_OVERLOAD_DCDC1,
|
|
TPS65090_IRQ_OVERLOAD_DCDC2,
|
|
TPS65090_IRQ_OVERLOAD_DCDC3,
|
|
TPS65090_IRQ_OVERLOAD_FET1,
|
|
TPS65090_IRQ_OVERLOAD_FET2,
|
|
TPS65090_IRQ_OVERLOAD_FET3,
|
|
TPS65090_IRQ_OVERLOAD_FET4,
|
|
TPS65090_IRQ_OVERLOAD_FET5,
|
|
TPS65090_IRQ_OVERLOAD_FET6,
|
|
TPS65090_IRQ_OVERLOAD_FET7,
|
|
};
|
|
|
|
/* TPS65090 Regulator ID */
|
|
enum {
|
|
TPS65090_REGULATOR_DCDC1,
|
|
TPS65090_REGULATOR_DCDC2,
|
|
TPS65090_REGULATOR_DCDC3,
|
|
TPS65090_REGULATOR_FET1,
|
|
TPS65090_REGULATOR_FET2,
|
|
TPS65090_REGULATOR_FET3,
|
|
TPS65090_REGULATOR_FET4,
|
|
TPS65090_REGULATOR_FET5,
|
|
TPS65090_REGULATOR_FET6,
|
|
TPS65090_REGULATOR_FET7,
|
|
TPS65090_REGULATOR_LDO1,
|
|
TPS65090_REGULATOR_LDO2,
|
|
|
|
/* Last entry for maximum ID */
|
|
TPS65090_REGULATOR_MAX,
|
|
};
|
|
|
|
struct tps65090 {
|
|
struct device *dev;
|
|
struct regmap *rmap;
|
|
struct regmap_irq_chip_data *irq_data;
|
|
};
|
|
|
|
/*
|
|
* struct tps65090_regulator_plat_data
|
|
*
|
|
* @reg_init_data: The regulator init data.
|
|
* @enable_ext_control: Enable extrenal control or not. Only available for
|
|
* DCDC1, DCDC2 and DCDC3.
|
|
* @gpio: Gpio number if external control is enabled and controlled through
|
|
* gpio.
|
|
*/
|
|
struct tps65090_regulator_plat_data {
|
|
struct regulator_init_data *reg_init_data;
|
|
bool enable_ext_control;
|
|
int gpio;
|
|
};
|
|
|
|
struct tps65090_platform_data {
|
|
int irq_base;
|
|
|
|
char **supplied_to;
|
|
size_t num_supplicants;
|
|
int enable_low_current_chrg;
|
|
|
|
struct tps65090_regulator_plat_data *reg_pdata[TPS65090_REGULATOR_MAX];
|
|
};
|
|
|
|
/*
|
|
* NOTE: the functions below are not intended for use outside
|
|
* of the TPS65090 sub-device drivers
|
|
*/
|
|
static inline int tps65090_write(struct device *dev, int reg, uint8_t val)
|
|
{
|
|
struct tps65090 *tps = dev_get_drvdata(dev);
|
|
|
|
return regmap_write(tps->rmap, reg, val);
|
|
}
|
|
|
|
static inline int tps65090_read(struct device *dev, int reg, uint8_t *val)
|
|
{
|
|
struct tps65090 *tps = dev_get_drvdata(dev);
|
|
unsigned int temp_val;
|
|
int ret;
|
|
|
|
ret = regmap_read(tps->rmap, reg, &temp_val);
|
|
if (!ret)
|
|
*val = temp_val;
|
|
return ret;
|
|
}
|
|
|
|
static inline int tps65090_set_bits(struct device *dev, int reg,
|
|
uint8_t bit_num)
|
|
{
|
|
struct tps65090 *tps = dev_get_drvdata(dev);
|
|
|
|
return regmap_update_bits(tps->rmap, reg, BIT(bit_num), ~0u);
|
|
}
|
|
|
|
static inline int tps65090_clr_bits(struct device *dev, int reg,
|
|
uint8_t bit_num)
|
|
{
|
|
struct tps65090 *tps = dev_get_drvdata(dev);
|
|
|
|
return regmap_update_bits(tps->rmap, reg, BIT(bit_num), 0u);
|
|
}
|
|
|
|
#endif /*__LINUX_MFD_TPS65090_H */
|