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

maple.h (2775B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __LINUX_MAPLE_H
      3#define __LINUX_MAPLE_H
      4
      5#include <mach/maple.h>
      6
      7struct device;
      8extern struct bus_type maple_bus_type;
      9
     10/* Maple Bus command and response codes */
     11enum maple_code {
     12	MAPLE_RESPONSE_FILEERR =	-5,
     13	MAPLE_RESPONSE_AGAIN,	/* retransmit */
     14	MAPLE_RESPONSE_BADCMD,
     15	MAPLE_RESPONSE_BADFUNC,
     16	MAPLE_RESPONSE_NONE,	/* unit didn't respond*/
     17	MAPLE_COMMAND_DEVINFO =		1,
     18	MAPLE_COMMAND_ALLINFO,
     19	MAPLE_COMMAND_RESET,
     20	MAPLE_COMMAND_KILL,
     21	MAPLE_RESPONSE_DEVINFO,
     22	MAPLE_RESPONSE_ALLINFO,
     23	MAPLE_RESPONSE_OK,
     24	MAPLE_RESPONSE_DATATRF,
     25	MAPLE_COMMAND_GETCOND,
     26	MAPLE_COMMAND_GETMINFO,
     27	MAPLE_COMMAND_BREAD,
     28	MAPLE_COMMAND_BWRITE,
     29	MAPLE_COMMAND_BSYNC,
     30	MAPLE_COMMAND_SETCOND,
     31	MAPLE_COMMAND_MICCONTROL
     32};
     33
     34enum maple_file_errors {
     35	MAPLE_FILEERR_INVALID_PARTITION =	0x01000000,
     36	MAPLE_FILEERR_PHASE_ERROR =		0x02000000,
     37	MAPLE_FILEERR_INVALID_BLOCK =		0x04000000,
     38	MAPLE_FILEERR_WRITE_ERROR =		0x08000000,
     39	MAPLE_FILEERR_INVALID_WRITE_LENGTH =	0x10000000,
     40	MAPLE_FILEERR_BAD_CRC = 		0x20000000
     41};
     42
     43struct maple_buffer {
     44	char bufx[0x400];
     45	void *buf;
     46};
     47
     48struct mapleq {
     49	struct list_head list;
     50	struct maple_device *dev;
     51	struct maple_buffer *recvbuf;
     52	void *sendbuf, *recvbuf_p2;
     53	unsigned char length;
     54	enum maple_code command;
     55};
     56
     57struct maple_devinfo {
     58	unsigned long function;
     59	unsigned long function_data[3];
     60	unsigned char area_code;
     61	unsigned char connector_direction;
     62	char product_name[31];
     63	char product_licence[61];
     64	unsigned short standby_power;
     65	unsigned short max_power;
     66};
     67
     68struct maple_device {
     69	struct maple_driver *driver;
     70	struct mapleq *mq;
     71	void (*callback) (struct mapleq * mq);
     72	void (*fileerr_handler)(struct maple_device *mdev, void *recvbuf);
     73	int (*can_unload)(struct maple_device *mdev);
     74	unsigned long when, interval, function;
     75	struct maple_devinfo devinfo;
     76	unsigned char port, unit;
     77	char product_name[32];
     78	char product_licence[64];
     79	atomic_t busy;
     80	wait_queue_head_t maple_wait;
     81	struct device dev;
     82};
     83
     84struct maple_driver {
     85	unsigned long function;
     86	struct device_driver drv;
     87};
     88
     89void maple_getcond_callback(struct maple_device *dev,
     90			    void (*callback) (struct mapleq * mq),
     91			    unsigned long interval,
     92			    unsigned long function);
     93int maple_driver_register(struct maple_driver *);
     94void maple_driver_unregister(struct maple_driver *);
     95
     96int maple_add_packet(struct maple_device *mdev, u32 function,
     97	u32 command, u32 length, void *data);
     98void maple_clear_dev(struct maple_device *mdev);
     99
    100#define to_maple_dev(n) container_of(n, struct maple_device, dev)
    101#define to_maple_driver(n) container_of(n, struct maple_driver, drv)
    102
    103#define maple_get_drvdata(d)		dev_get_drvdata(&(d)->dev)
    104#define maple_set_drvdata(d,p)		dev_set_drvdata(&(d)->dev, (p))
    105
    106#endif				/* __LINUX_MAPLE_H */