cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

extcon-provider.h (3919B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * External Connector (extcon) framework
      4 * - linux/include/linux/extcon-provider.h for extcon provider device driver.
      5 *
      6 * Copyright (C) 2017 Samsung Electronics
      7 * Author: Chanwoo Choi <cw00.choi@samsung.com>
      8 */
      9
     10#ifndef __LINUX_EXTCON_PROVIDER_H__
     11#define __LINUX_EXTCON_PROVIDER_H__
     12
     13#include <linux/extcon.h>
     14
     15struct extcon_dev;
     16
     17#if IS_ENABLED(CONFIG_EXTCON)
     18
     19/* Following APIs register/unregister the extcon device. */
     20int extcon_dev_register(struct extcon_dev *edev);
     21void extcon_dev_unregister(struct extcon_dev *edev);
     22int devm_extcon_dev_register(struct device *dev,
     23				struct extcon_dev *edev);
     24void devm_extcon_dev_unregister(struct device *dev,
     25				struct extcon_dev *edev);
     26
     27/* Following APIs allocate/free the memory of the extcon device. */
     28struct extcon_dev *extcon_dev_allocate(const unsigned int *cable);
     29void extcon_dev_free(struct extcon_dev *edev);
     30struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
     31				const unsigned int *cable);
     32void devm_extcon_dev_free(struct device *dev, struct extcon_dev *edev);
     33
     34/* Synchronize the state and property value for each external connector. */
     35int extcon_sync(struct extcon_dev *edev, unsigned int id);
     36
     37/*
     38 * Following APIs set the connected state of each external connector.
     39 * The 'id' argument indicates the defined external connector.
     40 */
     41int extcon_set_state(struct extcon_dev *edev, unsigned int id,
     42				bool state);
     43int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
     44				bool state);
     45
     46/*
     47 * Following APIs set the property of each external connector.
     48 * The 'id' argument indicates the defined external connector
     49 * and the 'prop' indicates the extcon property.
     50 *
     51 * And extcon_set_property_capability() set the capability of the property
     52 * for each external connector. They are used to set the capability of the
     53 * property of each external connector based on the id and property.
     54 */
     55int extcon_set_property(struct extcon_dev *edev, unsigned int id,
     56				unsigned int prop,
     57				union extcon_property_value prop_val);
     58int extcon_set_property_sync(struct extcon_dev *edev, unsigned int id,
     59				unsigned int prop,
     60				union extcon_property_value prop_val);
     61int extcon_set_property_capability(struct extcon_dev *edev,
     62				unsigned int id, unsigned int prop);
     63
     64#else /* CONFIG_EXTCON */
     65static inline int extcon_dev_register(struct extcon_dev *edev)
     66{
     67	return 0;
     68}
     69
     70static inline void extcon_dev_unregister(struct extcon_dev *edev) { }
     71
     72static inline int devm_extcon_dev_register(struct device *dev,
     73				struct extcon_dev *edev)
     74{
     75	return -EINVAL;
     76}
     77
     78static inline void devm_extcon_dev_unregister(struct device *dev,
     79				struct extcon_dev *edev) { }
     80
     81static inline struct extcon_dev *extcon_dev_allocate(const unsigned int *cable)
     82{
     83	return ERR_PTR(-ENOSYS);
     84}
     85
     86static inline void extcon_dev_free(struct extcon_dev *edev) { }
     87
     88static inline struct extcon_dev *devm_extcon_dev_allocate(struct device *dev,
     89				const unsigned int *cable)
     90{
     91	return ERR_PTR(-ENOSYS);
     92}
     93
     94static inline void devm_extcon_dev_free(struct extcon_dev *edev) { }
     95
     96
     97static inline int extcon_set_state(struct extcon_dev *edev, unsigned int id,
     98				bool state)
     99{
    100	return 0;
    101}
    102
    103static inline int extcon_set_state_sync(struct extcon_dev *edev, unsigned int id,
    104				bool state)
    105{
    106	return 0;
    107}
    108
    109static inline int extcon_sync(struct extcon_dev *edev, unsigned int id)
    110{
    111	return 0;
    112}
    113
    114static inline int extcon_set_property(struct extcon_dev *edev, unsigned int id,
    115				unsigned int prop,
    116				union extcon_property_value prop_val)
    117{
    118	return 0;
    119}
    120
    121static inline int extcon_set_property_sync(struct extcon_dev *edev,
    122				unsigned int id, unsigned int prop,
    123				union extcon_property_value prop_val)
    124{
    125	return 0;
    126}
    127
    128static inline int extcon_set_property_capability(struct extcon_dev *edev,
    129				unsigned int id, unsigned int prop)
    130{
    131	return 0;
    132}
    133#endif /* CONFIG_EXTCON */
    134#endif /* __LINUX_EXTCON_PROVIDER_H__ */