mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-15 21:56:26 +07:00
2874c5fd28
Based on 1 normalized pattern(s): 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 extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 3029 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190527070032.746973796@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
146 lines
4.3 KiB
C
146 lines
4.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* include/linux/mfd/wm831x/pdata.h -- Platform data for WM831x
|
|
*
|
|
* Copyright 2009 Wolfson Microelectronics PLC.
|
|
*
|
|
* Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
|
|
*/
|
|
|
|
#ifndef __MFD_WM831X_PDATA_H__
|
|
#define __MFD_WM831X_PDATA_H__
|
|
|
|
struct wm831x;
|
|
struct regulator_init_data;
|
|
|
|
struct wm831x_backlight_pdata {
|
|
int isink; /** ISINK to use, 1 or 2 */
|
|
int max_uA; /** Maximum current to allow */
|
|
};
|
|
|
|
struct wm831x_backup_pdata {
|
|
int charger_enable;
|
|
int no_constant_voltage; /** Disable constant voltage charging */
|
|
int vlim; /** Voltage limit in millivolts */
|
|
int ilim; /** Current limit in microamps */
|
|
};
|
|
|
|
struct wm831x_battery_pdata {
|
|
int enable; /** Enable charging */
|
|
int fast_enable; /** Enable fast charging */
|
|
int off_mask; /** Mask OFF while charging */
|
|
int trickle_ilim; /** Trickle charge current limit, in mA */
|
|
int vsel; /** Target voltage, in mV */
|
|
int eoc_iterm; /** End of trickle charge current, in mA */
|
|
int fast_ilim; /** Fast charge current limit, in mA */
|
|
int timeout; /** Charge cycle timeout, in minutes */
|
|
};
|
|
|
|
/**
|
|
* Configuration for the WM831x DC-DC BuckWise convertors. This
|
|
* should be passed as driver_data in the regulator_init_data.
|
|
*
|
|
* Currently all the configuration is for the fast DVS switching
|
|
* support of the devices. This allows MFPs on the device to be
|
|
* configured as an input to switch between two output voltages,
|
|
* allowing voltage transitions without the expense of an access over
|
|
* I2C or SPI buses.
|
|
*/
|
|
struct wm831x_buckv_pdata {
|
|
int dvs_gpio; /** CPU GPIO to use for DVS switching */
|
|
int dvs_control_src; /** Hardware DVS source to use (1 or 2) */
|
|
int dvs_init_state; /** DVS state to expect on startup */
|
|
int dvs_state_gpio; /** CPU GPIO to use for monitoring status */
|
|
};
|
|
|
|
/* Sources for status LED configuration. Values are register values
|
|
* plus 1 to allow for a zero default for preserve.
|
|
*/
|
|
enum wm831x_status_src {
|
|
WM831X_STATUS_PRESERVE = 0, /* Keep the current hardware setting */
|
|
WM831X_STATUS_OTP = 1,
|
|
WM831X_STATUS_POWER = 2,
|
|
WM831X_STATUS_CHARGER = 3,
|
|
WM831X_STATUS_MANUAL = 4,
|
|
};
|
|
|
|
struct wm831x_status_pdata {
|
|
enum wm831x_status_src default_src;
|
|
const char *name;
|
|
const char *default_trigger;
|
|
};
|
|
|
|
struct wm831x_touch_pdata {
|
|
int fivewire; /** 1 for five wire mode, 0 for 4 wire */
|
|
int isel; /** Current for pen down (uA) */
|
|
int rpu; /** Pen down sensitivity resistor divider */
|
|
int pressure; /** Report pressure (boolean) */
|
|
unsigned int data_irq; /** Touch data ready IRQ */
|
|
int data_irqf; /** IRQ flags for data ready IRQ */
|
|
unsigned int pd_irq; /** Touch pendown detect IRQ */
|
|
int pd_irqf; /** IRQ flags for pen down IRQ */
|
|
};
|
|
|
|
enum wm831x_watchdog_action {
|
|
WM831X_WDOG_NONE = 0,
|
|
WM831X_WDOG_INTERRUPT = 1,
|
|
WM831X_WDOG_RESET = 2,
|
|
WM831X_WDOG_WAKE = 3,
|
|
};
|
|
|
|
struct wm831x_watchdog_pdata {
|
|
enum wm831x_watchdog_action primary, secondary;
|
|
int update_gpio;
|
|
unsigned int software:1;
|
|
};
|
|
|
|
#define WM831X_MAX_STATUS 2
|
|
#define WM831X_MAX_DCDC 4
|
|
#define WM831X_MAX_EPE 2
|
|
#define WM831X_MAX_LDO 11
|
|
#define WM831X_MAX_ISINK 2
|
|
|
|
#define WM831X_GPIO_CONFIGURE 0x10000
|
|
#define WM831X_GPIO_NUM 16
|
|
|
|
struct wm831x_pdata {
|
|
/** Used to distinguish multiple WM831x chips */
|
|
int wm831x_num;
|
|
|
|
/** Called before subdevices are set up */
|
|
int (*pre_init)(struct wm831x *wm831x);
|
|
/** Called after subdevices are set up */
|
|
int (*post_init)(struct wm831x *wm831x);
|
|
|
|
/** Put the /IRQ line into CMOS mode */
|
|
bool irq_cmos;
|
|
|
|
/** Disable the touchscreen */
|
|
bool disable_touch;
|
|
|
|
/** The driver should initiate a power off sequence during shutdown */
|
|
bool soft_shutdown;
|
|
|
|
int irq_base;
|
|
int gpio_base;
|
|
int gpio_defaults[WM831X_GPIO_NUM];
|
|
struct wm831x_backlight_pdata *backlight;
|
|
struct wm831x_backup_pdata *backup;
|
|
struct wm831x_battery_pdata *battery;
|
|
struct wm831x_touch_pdata *touch;
|
|
struct wm831x_watchdog_pdata *watchdog;
|
|
|
|
/** LED1 = 0 and so on */
|
|
struct wm831x_status_pdata *status[WM831X_MAX_STATUS];
|
|
/** DCDC1 = 0 and so on */
|
|
struct regulator_init_data *dcdc[WM831X_MAX_DCDC];
|
|
/** EPE1 = 0 and so on */
|
|
struct regulator_init_data *epe[WM831X_MAX_EPE];
|
|
/** LDO1 = 0 and so on */
|
|
struct regulator_init_data *ldo[WM831X_MAX_LDO];
|
|
/** ISINK1 = 0 and so on*/
|
|
struct regulator_init_data *isink[WM831X_MAX_ISINK];
|
|
};
|
|
|
|
#endif
|