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

c2port.h (1384B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  Silicon Labs C2 port Linux support
      4 *
      5 *  Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it>
      6 *  Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it>
      7 */
      8
      9#define C2PORT_NAME_LEN			32
     10
     11struct device;
     12
     13/*
     14 * C2 port basic structs
     15 */
     16
     17/* Main struct */
     18struct c2port_ops;
     19struct c2port_device {
     20	unsigned int access:1;
     21	unsigned int flash_access:1;
     22
     23	int id;
     24	char name[C2PORT_NAME_LEN];
     25	struct c2port_ops *ops;
     26	struct mutex mutex;		/* prevent races during read/write */
     27
     28	struct device *dev;
     29
     30	void *private_data;
     31};
     32
     33/* Basic operations */
     34struct c2port_ops {
     35	/* Flash layout */
     36	unsigned short block_size;	/* flash block size in bytes */
     37	unsigned short blocks_num;	/* flash blocks number */
     38
     39	/* Enable or disable the access to C2 port */
     40	void (*access)(struct c2port_device *dev, int status);
     41
     42	/* Set C2D data line as input/output */
     43	void (*c2d_dir)(struct c2port_device *dev, int dir);
     44
     45	/* Read/write C2D data line */
     46	int (*c2d_get)(struct c2port_device *dev);
     47	void (*c2d_set)(struct c2port_device *dev, int status);
     48
     49	/* Write C2CK clock line */
     50	void (*c2ck_set)(struct c2port_device *dev, int status);
     51};
     52
     53/*
     54 * Exported functions
     55 */
     56
     57extern struct c2port_device *c2port_device_register(char *name,
     58					struct c2port_ops *ops, void *devdata);
     59extern void c2port_device_unregister(struct c2port_device *dev);