/
usr
/
src
/
kernels
/
4.18.0-553.121.1.el8_10.x86_64
/
include
/
linux
/
mfd
/
/usr/src/kernels/4.18.0-553.121.1.el8_10.x86_64/include/linux/mfd
mkdir
upload
Name
Size
Mode
Actions
abx500/
-
0755
rm
arizona/
-
0755
rm
da9052/
-
0755
rm
da9055/
-
0755
rm
da9062/
-
0755
rm
da9063/
-
0755
rm
da9150/
-
0755
rm
mt6323/
-
0755
rm
mt6397/
-
0755
rm
pcf50633/
-
0755
rm
samsung/
-
0755
rm
syscon/
-
0755
rm
wm831x/
-
0755
rm
wm8350/
-
0755
rm
wm8994/
-
0755
rm
88pm80x.h
10226
0644
edit
dl
rm
88pm860x.h
13654
0644
edit
dl
rm
aat2870.h
4651
0644
edit
dl
rm
ab3100.h
4262
0644
edit
dl
rm
abx500.h
11980
0644
edit
dl
rm
ac100.h
6267
0644
edit
dl
rm
adp5520.h
8499
0644
edit
dl
rm
altera-a10sr.h
3507
0644
edit
dl
rm
as3711.h
2960
0644
edit
dl
rm
as3722.h
15477
0644
edit
dl
rm
asic3.h
12514
0644
edit
dl
rm
atmel-hlcdc.h
2634
0644
edit
dl
rm
axp20x.h
17214
0644
edit
dl
rm
bcm590xx.h
831
0644
edit
dl
rm
bd9571mwv.h
3712
0644
edit
dl
rm
core.h
4794
0644
edit
dl
rm
cros_ec.h
10595
0644
edit
dl
rm
cros_ec_commands.h
87508
0644
edit
dl
rm
cros_ec_lpc_mec.h
2838
0644
edit
dl
rm
cros_ec_lpc_reg.h
1949
0644
edit
dl
rm
da8xx-cfgchip.h
7501
0644
edit
dl
rm
da903x.h
7218
0644
edit
dl
rm
davinci_voicecodec.h
3323
0644
edit
dl
rm
db8500-prcmu.h
22205
0644
edit
dl
rm
dbx500-prcmu.h
14681
0644
edit
dl
rm
dln2.h
3617
0644
edit
dl
rm
dm355evm_msp.h
2879
0644
edit
dl
rm
ds1wm.h
817
0644
edit
dl
rm
ezx-pcap.h
7932
0644
edit
dl
rm
hi655x-pmic.h
2076
0644
edit
dl
rm
hi6421-pmic.h
1329
0644
edit
dl
rm
htc-pasic3.h
1225
0644
edit
dl
rm
imx25-tsadc.h
4972
0644
edit
dl
rm
intel_msic.h
16376
0644
edit
dl
rm
intel_soc_pmic.h
1265
0644
edit
dl
rm
intel_soc_pmic_bxtwc.h
2053
0644
edit
dl
rm
ipaq-micro.h
3750
0644
edit
dl
rm
janz.h
1053
0644
edit
dl
rm
kempld.h
4260
0644
edit
dl
rm
lm3533.h
2650
0644
edit
dl
rm
lochnagar.h
1624
0644
edit
dl
rm
lochnagar1_regs.h
7896
0644
edit
dl
rm
lochnagar2_regs.h
15550
0644
edit
dl
rm
lp873x.h
8895
0644
edit
dl
rm
lp3943.h
2747
0644
edit
dl
rm
lp8788-isink.h
1218
0644
edit
dl
rm
lp8788.h
8573
0644
edit
dl
rm
lp87565.h
7862
0644
edit
dl
rm
lpc_ich.h
1261
0644
edit
dl
rm
max8907.h
7701
0644
edit
dl
rm
max8925.h
7350
0644
edit
dl
rm
max8997-private.h
12733
0644
edit
dl
rm
max8997.h
6202
0644
edit
dl
rm
max8998-private.h
5126
0644
edit
dl
rm
max8998.h
3641
0644
edit
dl
rm
max14577-private.h
16240
0644
edit
dl
rm
max14577.h
2745
0644
edit
dl
rm
max77620.h
11134
0644
edit
dl
rm
max77686-private.h
13526
0644
edit
dl
rm
max77686.h
2709
0644
edit
dl
rm
max77693-common.h
1303
0644
edit
dl
rm
max77693-private.h
18384
0644
edit
dl
rm
max77693.h
2295
0644
edit
dl
rm
max77843-private.h
15804
0644
edit
dl
rm
mc13xxx.h
7872
0644
edit
dl
rm
mc13783.h
2902
0644
edit
dl
rm
mc13892.h
938
0644
edit
dl
rm
mcp.h
1816
0644
edit
dl
rm
menelaus.h
1284
0644
edit
dl
rm
motorola-cpcap.h
12797
0644
edit
dl
rm
mxs-lradc.h
6191
0644
edit
dl
rm
palmas.h
152645
0644
edit
dl
rm
qcom_rpm.h
293
0644
edit
dl
rm
rave-sp.h
1414
0644
edit
dl
rm
rc5t583.h
10056
0644
edit
dl
rm
rdc321x.h
591
0644
edit
dl
rm
retu.h
723
0644
edit
dl
rm
rk808.h
12807
0644
edit
dl
rm
rn5t618.h
7519
0644
edit
dl
rm
rt5033-private.h
8026
0644
edit
dl
rm
rt5033.h
1243
0644
edit
dl
rm
si476x-core.h
15606
0644
edit
dl
rm
si476x-platform.h
6603
0644
edit
dl
rm
si476x-reports.h
5010
0644
edit
dl
rm
sky81452.h
990
0644
edit
dl
rm
smsc.h
2921
0644
edit
dl
rm
sta2x11-mfd.h
19169
0644
edit
dl
rm
stm32-lptimer.h
1817
0644
edit
dl
rm
stm32-timers.h
5784
0644
edit
dl
rm
stmpe.h
3466
0644
edit
dl
rm
stw481x.h
1442
0644
edit
dl
rm
sun4i-gpadc.h
3710
0644
edit
dl
rm
syscon.h
1443
0644
edit
dl
rm
t7l66xb.h
817
0644
edit
dl
rm
tc3589x.h
3999
0644
edit
dl
rm
tc6387xb.h
516
0644
edit
dl
rm
tc6393xb.h
1548
0644
edit
dl
rm
ti-lmu-register.h
7613
0644
edit
dl
rm
ti-lmu.h
1822
0644
edit
dl
rm
ti_am335x_tscadc.h
5861
0644
edit
dl
rm
tmio.h
4098
0644
edit
dl
rm
tps6105x.h
3099
0644
edit
dl
rm
tps6507x.h
5055
0644
edit
dl
rm
tps6586x.h
2802
0644
edit
dl
rm
tps65010.h
6685
0644
edit
dl
rm
tps65086.h
3580
0644
edit
dl
rm
tps65090.h
4491
0644
edit
dl
rm
tps65217.h
8435
0644
edit
dl
rm
tps65218.h
8033
0644
edit
dl
rm
tps65910.h
31325
0644
edit
dl
rm
tps65912.h
10144
0644
edit
dl
rm
tps68470.h
3002
0644
edit
dl
rm
tps80031.h
20059
0644
edit
dl
rm
twl.h
26189
0644
edit
dl
rm
twl4030-audio.h
8741
0644
edit
dl
rm
twl6040.h
7328
0644
edit
dl
rm
ucb1x00.h
6728
0644
edit
dl
rm
viperboard.h
3022
0644
edit
dl
rm
wl1273-core.h
8496
0644
edit
dl
rm
wm97xx.h
576
0644
edit
dl
rm
wm8400-audio.h
71471
0644
edit
dl
rm
wm8400-private.h
59376
0644
edit
dl
rm
wm8400.h
1213
0644
edit
dl
rm
Edit:
/usr/src/kernels/4.18.0-553.121.1.el8_10.x86_64/include/linux/mfd/cros_ec.h
(10595B)
/* * ChromeOS EC multi-function device * * Copyright (C) 2012 Google, Inc * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * 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. */ #ifndef __LINUX_MFD_CROS_EC_H #define __LINUX_MFD_CROS_EC_H #include <linux/cdev.h> #include <linux/device.h> #include <linux/notifier.h> #include <linux/mfd/cros_ec_commands.h> #include <linux/mutex.h> #define CROS_EC_DEV_NAME "cros_ec" #define CROS_EC_DEV_PD_NAME "cros_pd" /* * The EC is unresponsive for a time after a reboot command. Add a * simple delay to make sure that the bus stays locked. */ #define EC_REBOOT_DELAY_MS 50 /* * Max bus-specific overhead incurred by request/responses. * I2C requires 1 additional byte for requests. * I2C requires 2 additional bytes for responses. * SPI requires up to 32 additional bytes for responses. * */ #define EC_PROTO_VERSION_UNKNOWN 0 #define EC_MAX_REQUEST_OVERHEAD 1 #define EC_MAX_RESPONSE_OVERHEAD 32 /* * Command interface between EC and AP, for LPC, I2C and SPI interfaces. */ enum { EC_MSG_TX_HEADER_BYTES = 3, EC_MSG_TX_TRAILER_BYTES = 1, EC_MSG_TX_PROTO_BYTES = EC_MSG_TX_HEADER_BYTES + EC_MSG_TX_TRAILER_BYTES, EC_MSG_RX_PROTO_BYTES = 3, /* Max length of messages for proto 2*/ EC_PROTO2_MSG_BYTES = EC_PROTO2_MAX_PARAM_SIZE + EC_MSG_TX_PROTO_BYTES, EC_MAX_MSG_BYTES = 64 * 1024, }; /* * @version: Command version number (often 0) * @command: Command to send (EC_CMD_...) * @outsize: Outgoing length in bytes * @insize: Max number of bytes to accept from EC * @result: EC's response to the command (separate from communication failure) * @data: Where to put the incoming data from EC and outgoing data to EC */ struct cros_ec_command { uint32_t version; uint32_t command; uint32_t outsize; uint32_t insize; uint32_t result; uint8_t data[0]; }; /** * struct cros_ec_device - Information about a ChromeOS EC device * * @phys_name: name of physical comms layer (e.g. 'i2c-4') * @dev: Device pointer for physical comms device * @was_wake_device: true if this device was set to wake the system from * sleep at the last suspend * @cmd_readmem: direct read of the EC memory-mapped region, if supported * @offset is within EC_LPC_ADDR_MEMMAP region. * @bytes: number of bytes to read. zero means "read a string" (including * the trailing '\0'). At most only EC_MEMMAP_SIZE bytes can be read. * Caller must ensure that the buffer is large enough for the result when * reading a string. * * @priv: Private data * @irq: Interrupt to use * @id: Device id * @din: input buffer (for data from EC) * @dout: output buffer (for data to EC) * \note * These two buffers will always be dword-aligned and include enough * space for up to 7 word-alignment bytes also, so we can ensure that * the body of the message is always dword-aligned (64-bit). * We use this alignment to keep ARM and x86 happy. Probably word * alignment would be OK, there might be a small performance advantage * to using dword. * @din_size: size of din buffer to allocate (zero to use static din) * @dout_size: size of dout buffer to allocate (zero to use static dout) * @wake_enabled: true if this device can wake the system from sleep * @suspended: true if this device had been suspended * @cmd_xfer: send command to EC and get response * Returns the number of bytes received if the communication succeeded, but * that doesn't mean the EC was happy with the command. The caller * should check msg.result for the EC's result code. * @pkt_xfer: send packet to EC and get response * @lock: one transaction at a time * @mkbp_event_supported: true if this EC supports the MKBP event protocol. * @event_notifier: interrupt event notifier for transport devices. * @event_data: raw payload transferred with the MKBP event. * @event_size: size in bytes of the event data. */ struct cros_ec_device { /* These are used by other drivers that want to talk to the EC */ const char *phys_name; struct device *dev; bool was_wake_device; struct class *cros_class; int (*cmd_readmem)(struct cros_ec_device *ec, unsigned int offset, unsigned int bytes, void *dest); /* These are used to implement the platform-specific interface */ u16 max_request; u16 max_response; u16 max_passthru; u16 proto_version; void *priv; int irq; u8 *din; u8 *dout; int din_size; int dout_size; bool wake_enabled; bool suspended; int (*cmd_xfer)(struct cros_ec_device *ec, struct cros_ec_command *msg); int (*pkt_xfer)(struct cros_ec_device *ec, struct cros_ec_command *msg); struct mutex lock; bool mkbp_event_supported; struct blocking_notifier_head event_notifier; struct ec_response_get_next_event event_data; int event_size; u32 host_event_wake_mask; }; /** * struct cros_ec_sensor_platform - ChromeOS EC sensor platform information * * @sensor_num: Id of the sensor, as reported by the EC. */ struct cros_ec_sensor_platform { u8 sensor_num; }; /* struct cros_ec_platform - ChromeOS EC platform information * * @ec_name: name of EC device (e.g. 'cros-ec', 'cros-pd', ...) * used in /dev/ and sysfs. * @cmd_offset: offset to apply for each command. Set when * registering a devicde behind another one. */ struct cros_ec_platform { const char *ec_name; u16 cmd_offset; }; struct cros_ec_debugfs; /* * struct cros_ec_dev - ChromeOS EC device entry point * * @class_dev: Device structure used in sysfs * @cdev: Character device structure in /dev * @ec_dev: cros_ec_device structure to talk to the physical device * @dev: pointer to the platform device * @debug_info: cros_ec_debugfs structure for debugging information * @has_kb_wake_angle: true if at least 2 accelerometer are connected to the EC. * @cmd_offset: offset to apply for each command. */ struct cros_ec_dev { struct device class_dev; struct cdev cdev; struct cros_ec_device *ec_dev; struct device *dev; struct cros_ec_debugfs *debug_info; bool has_kb_wake_angle; u16 cmd_offset; u32 features[2]; }; #define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) /** * cros_ec_suspend - Handle a suspend operation for the ChromeOS EC device * * This can be called by drivers to handle a suspend event. * * ec_dev: Device to suspend * @return 0 if ok, -ve on error */ int cros_ec_suspend(struct cros_ec_device *ec_dev); /** * cros_ec_resume - Handle a resume operation for the ChromeOS EC device * * This can be called by drivers to handle a resume event. * * @ec_dev: Device to resume * @return 0 if ok, -ve on error */ int cros_ec_resume(struct cros_ec_device *ec_dev); /** * cros_ec_prepare_tx - Prepare an outgoing message in the output buffer * * This is intended to be used by all ChromeOS EC drivers, but at present * only SPI uses it. Once LPC uses the same protocol it can start using it. * I2C could use it now, with a refactor of the existing code. * * @ec_dev: Device to register * @msg: Message to write */ int cros_ec_prepare_tx(struct cros_ec_device *ec_dev, struct cros_ec_command *msg); /** * cros_ec_check_result - Check ec_msg->result * * This is used by ChromeOS EC drivers to check the ec_msg->result for * errors and to warn about them. * * @ec_dev: EC device * @msg: Message to check */ int cros_ec_check_result(struct cros_ec_device *ec_dev, struct cros_ec_command *msg); /** * cros_ec_cmd_xfer - Send a command to the ChromeOS EC * * Call this to send a command to the ChromeOS EC. This should be used * instead of calling the EC's cmd_xfer() callback directly. * * @ec_dev: EC device * @msg: Message to write */ int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev, struct cros_ec_command *msg); /** * cros_ec_cmd_xfer_status - Send a command to the ChromeOS EC * * This function is identical to cros_ec_cmd_xfer, except it returns success * status only if both the command was transmitted successfully and the EC * replied with success status. It's not necessary to check msg->result when * using this function. * * @ec_dev: EC device * @msg: Message to write * @return: Num. of bytes transferred on success, <0 on failure */ int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev, struct cros_ec_command *msg); /** * cros_ec_remove - Remove a ChromeOS EC * * Call this to deregister a ChromeOS EC, then clean up any private data. * * @ec_dev: Device to register * @return 0 if ok, -ve on error */ int cros_ec_remove(struct cros_ec_device *ec_dev); /** * cros_ec_register - Register a new ChromeOS EC, using the provided info * * Before calling this, allocate a pointer to a new device and then fill * in all the fields up to the --private-- marker. * * @ec_dev: Device to register * @return 0 if ok, -ve on error */ int cros_ec_register(struct cros_ec_device *ec_dev); /** * cros_ec_query_all - Query the protocol version supported by the ChromeOS EC * * @ec_dev: Device to register * @return 0 if ok, -ve on error */ int cros_ec_query_all(struct cros_ec_device *ec_dev); /** * cros_ec_get_next_event - Fetch next event from the ChromeOS EC * * @ec_dev: Device to fetch event from * @wake_event: Pointer to a bool set to true upon return if the event might be * treated as a wake event. Ignored if null. * * Returns: 0 on success, Linux error number on failure */ int cros_ec_get_next_event(struct cros_ec_device *ec_dev, bool *wake_event); /** * cros_ec_get_host_event - Return a mask of event set by the EC. * * When MKBP is supported, when the EC raises an interrupt, * We collect the events raised and call the functions in the ec notifier. * * This function is a helper to know which events are raised. */ u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev); /* sysfs stuff */ extern struct attribute_group cros_ec_attr_group; extern struct attribute_group cros_ec_lightbar_attr_group; extern struct attribute_group cros_ec_vbc_attr_group; /* debugfs stuff */ int cros_ec_debugfs_init(struct cros_ec_dev *ec); void cros_ec_debugfs_remove(struct cros_ec_dev *ec); void cros_ec_debugfs_suspend(struct cros_ec_dev *ec); void cros_ec_debugfs_resume(struct cros_ec_dev *ec); #endif /* __LINUX_MFD_CROS_EC_H */
Save
cmd:
run