Blame view
drivers/extcon/extcon.h
2.5 KB
b24413180 License cleanup: ... |
1 |
/* SPDX-License-Identifier: GPL-2.0 */ |
e6cf04654 extcon: Move defi... |
2 3 |
#ifndef __LINUX_EXTCON_INTERNAL_H__ #define __LINUX_EXTCON_INTERNAL_H__ |
176aa3601 extcon: Split out... |
4 |
#include <linux/extcon-provider.h> |
e6cf04654 extcon: Move defi... |
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/** * struct extcon_dev - An extcon device represents one external connector. * @name: The name of this extcon device. Parent device name is * used if NULL. * @supported_cable: Array of supported cable names ending with EXTCON_NONE. * If supported_cable is NULL, cable name related APIs * are disabled. * @mutually_exclusive: Array of mutually exclusive set of cables that cannot * be attached simultaneously. The array should be * ending with NULL or be NULL (no mutually exclusive * cables). For example, if it is { 0x7, 0x30, 0}, then, * {0, 1}, {0, 1, 2}, {0, 2}, {1, 2}, or {4, 5} cannot * be attached simulataneously. {0x7, 0} is equivalent to * {0x3, 0x6, 0x5, 0}. If it is {0xFFFFFFFF, 0}, there * can be no simultaneous connections. * @dev: Device of this extcon. * @state: Attach/detach state of this extcon. Do not provide at * register-time. |
815429b39 extcon: Add new e... |
24 25 |
* @nh_all: Notifier for the state change events for all supported * external connectors from this extcon. |
e6cf04654 extcon: Move defi... |
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
* @nh: Notifier for the state change events from this extcon * @entry: To support list of extcon devices so that users can * search for extcon devices based on the extcon name. * @lock: * @max_supported: Internal value to store the number of cables. * @extcon_dev_type: Device_type struct to provide attribute_groups * customized for each extcon device. * @cables: Sysfs subdirectories. Each represents one cable. * * In most cases, users only need to provide "User initializing data" of * this struct when registering an extcon. In some exceptional cases, * optional callbacks may be needed. However, the values in "internal data" * are overwritten by register function. */ struct extcon_dev { /* Optional user initializing data */ const char *name; const unsigned int *supported_cable; const u32 *mutually_exclusive; /* Internal data. Please do not set. */ struct device dev; |
815429b39 extcon: Add new e... |
48 |
struct raw_notifier_head nh_all; |
e6cf04654 extcon: Move defi... |
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
struct raw_notifier_head *nh; struct list_head entry; int max_supported; spinlock_t lock; /* could be called by irq handler */ u32 state; /* /sys/class/extcon/.../cable.n/... */ struct device_type extcon_dev_type; struct extcon_cable *cables; /* /sys/class/extcon/.../mutually_exclusive/... */ struct attribute_group attr_g_muex; struct attribute **attrs_muex; struct device_attribute *d_attrs_muex; }; #endif /* __LINUX_EXTCON_INTERNAL_H__ */ |