/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_EXTCON_INTERNAL_H__
#define __LINUX_EXTCON_INTERNAL_H__
#include <linux/extcon-provider.h>
/**
* 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 0 or be NULL ( no mutually exclusive cables ) .
* For example , if it is { 0 x7 , 0 x30 , 0 } , then ,
* { 0 , 1 } , { 0 , 1 , 2 } , { 0 , 2 } , { 1 , 2 } , or { 4 , 5 } cannot
* be attached simulataneously . { 0 x7 , 0 } is equivalent to
* { 0 x3 , 0 x6 , 0 x5 , 0 } . If it is { 0 xFFFFFFFF , 0 } , there
* can be no simultaneous connections .
* @ dev : Device of this extcon .
* @ id : Unique device ID of this extcon .
* @ state : Attach / detach state of this extcon . Do not provide at
* register - time .
* @ nh_all : Notifier for the state change events for all supported
* external connectors from this extcon .
* @ 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 : Protects device state and serialises device registration
* @ 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;
unsigned int id;
struct raw_notifier_head nh_all;
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__ */
Messung V0.5 in Prozent C=89 H=100 G=94
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet am 2026-09-28)
¤
*Bot Zugriff