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

interface.h (2205B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Greybus Interface Block code
      4 *
      5 * Copyright 2014 Google Inc.
      6 * Copyright 2014 Linaro Ltd.
      7 */
      8
      9#ifndef __INTERFACE_H
     10#define __INTERFACE_H
     11
     12#include <linux/types.h>
     13#include <linux/device.h>
     14
     15enum gb_interface_type {
     16	GB_INTERFACE_TYPE_INVALID = 0,
     17	GB_INTERFACE_TYPE_UNKNOWN,
     18	GB_INTERFACE_TYPE_DUMMY,
     19	GB_INTERFACE_TYPE_UNIPRO,
     20	GB_INTERFACE_TYPE_GREYBUS,
     21};
     22
     23#define GB_INTERFACE_QUIRK_NO_CPORT_FEATURES		BIT(0)
     24#define GB_INTERFACE_QUIRK_NO_INIT_STATUS		BIT(1)
     25#define GB_INTERFACE_QUIRK_NO_GMP_IDS			BIT(2)
     26#define GB_INTERFACE_QUIRK_FORCED_DISABLE		BIT(3)
     27#define GB_INTERFACE_QUIRK_LEGACY_MODE_SWITCH		BIT(4)
     28#define GB_INTERFACE_QUIRK_NO_BUNDLE_ACTIVATE		BIT(5)
     29#define GB_INTERFACE_QUIRK_NO_PM			BIT(6)
     30
     31struct gb_interface {
     32	struct device dev;
     33	struct gb_control *control;
     34
     35	struct list_head bundles;
     36	struct list_head module_node;
     37	struct list_head manifest_descs;
     38	u8 interface_id;	/* Physical location within the Endo */
     39	u8 device_id;
     40	u8 features;		/* Feature flags set in the manifest */
     41
     42	enum gb_interface_type type;
     43
     44	u32 ddbl1_manufacturer_id;
     45	u32 ddbl1_product_id;
     46	u32 vendor_id;
     47	u32 product_id;
     48	u64 serial_number;
     49
     50	struct gb_host_device *hd;
     51	struct gb_module *module;
     52
     53	unsigned long quirks;
     54
     55	struct mutex mutex;
     56
     57	bool disconnected;
     58
     59	bool ejected;
     60	bool removed;
     61	bool active;
     62	bool enabled;
     63	bool mode_switch;
     64	bool dme_read;
     65
     66	struct work_struct mode_switch_work;
     67	struct completion mode_switch_completion;
     68};
     69#define to_gb_interface(d) container_of(d, struct gb_interface, dev)
     70
     71struct gb_interface *gb_interface_create(struct gb_module *module,
     72					 u8 interface_id);
     73int gb_interface_activate(struct gb_interface *intf);
     74void gb_interface_deactivate(struct gb_interface *intf);
     75int gb_interface_enable(struct gb_interface *intf);
     76void gb_interface_disable(struct gb_interface *intf);
     77int gb_interface_add(struct gb_interface *intf);
     78void gb_interface_del(struct gb_interface *intf);
     79void gb_interface_put(struct gb_interface *intf);
     80void gb_interface_mailbox_event(struct gb_interface *intf, u16 result,
     81								u32 mailbox);
     82
     83int gb_interface_request_mode_switch(struct gb_interface *intf);
     84
     85#endif /* __INTERFACE_H */