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

vuart.h (2968B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  PS3 virtual uart
      4 *
      5 *  Copyright (C) 2006 Sony Computer Entertainment Inc.
      6 *  Copyright 2006 Sony Corp.
      7 */
      8
      9#if !defined(_PS3_VUART_H)
     10#define _PS3_VUART_H
     11
     12#include <asm/ps3.h>
     13
     14struct ps3_vuart_stats {
     15	unsigned long bytes_written;
     16	unsigned long bytes_read;
     17	unsigned long tx_interrupts;
     18	unsigned long rx_interrupts;
     19	unsigned long disconnect_interrupts;
     20};
     21
     22struct ps3_vuart_work {
     23	struct work_struct work;
     24	unsigned long trigger;
     25	struct ps3_system_bus_device *dev; /* to convert work to device */
     26};
     27
     28/**
     29 * struct ps3_vuart_port_driver - a driver for a device on a vuart port
     30 */
     31
     32struct ps3_vuart_port_driver {
     33	struct ps3_system_bus_driver core;
     34	int (*probe)(struct ps3_system_bus_device *);
     35	int (*remove)(struct ps3_system_bus_device *);
     36	void (*shutdown)(struct ps3_system_bus_device *);
     37	void (*work)(struct ps3_system_bus_device *);
     38	/* int (*tx_event)(struct ps3_system_bus_device *dev); */
     39	/* int (*rx_event)(struct ps3_system_bus_device *dev); */
     40	/* int (*disconnect_event)(struct ps3_system_bus_device *dev); */
     41	/* int (*suspend)(struct ps3_system_bus_device *, pm_message_t); */
     42	/* int (*resume)(struct ps3_system_bus_device *); */
     43};
     44
     45int ps3_vuart_port_driver_register(struct ps3_vuart_port_driver *drv);
     46void ps3_vuart_port_driver_unregister(struct ps3_vuart_port_driver *drv);
     47
     48static inline struct ps3_vuart_port_driver *
     49	ps3_system_bus_dev_to_vuart_drv(struct ps3_system_bus_device *_dev)
     50{
     51	struct ps3_system_bus_driver *sbd =
     52		ps3_system_bus_dev_to_system_bus_drv(_dev);
     53	BUG_ON(!sbd);
     54	return container_of(sbd, struct ps3_vuart_port_driver, core);
     55}
     56static inline struct ps3_system_bus_device *ps3_vuart_work_to_system_bus_dev(
     57	struct work_struct *_work)
     58{
     59	struct ps3_vuart_work *vw = container_of(_work, struct ps3_vuart_work,
     60		work);
     61	return vw->dev;
     62}
     63
     64int ps3_vuart_write(struct ps3_system_bus_device *dev, const void *buf,
     65	unsigned int bytes);
     66int ps3_vuart_read(struct ps3_system_bus_device *dev, void *buf,
     67	unsigned int bytes);
     68int ps3_vuart_read_async(struct ps3_system_bus_device *dev, unsigned int bytes);
     69void ps3_vuart_cancel_async(struct ps3_system_bus_device *dev);
     70void ps3_vuart_clear_rx_bytes(struct ps3_system_bus_device *dev,
     71	unsigned int bytes);
     72
     73struct vuart_triggers {
     74	unsigned long rx;
     75	unsigned long tx;
     76};
     77
     78int ps3_vuart_get_triggers(struct ps3_system_bus_device *dev,
     79	struct vuart_triggers *trig);
     80int ps3_vuart_set_triggers(struct ps3_system_bus_device *dev, unsigned int tx,
     81	unsigned int rx);
     82int ps3_vuart_enable_interrupt_tx(struct ps3_system_bus_device *dev);
     83int ps3_vuart_disable_interrupt_tx(struct ps3_system_bus_device *dev);
     84int ps3_vuart_enable_interrupt_rx(struct ps3_system_bus_device *dev);
     85int ps3_vuart_disable_interrupt_rx(struct ps3_system_bus_device *dev);
     86int ps3_vuart_enable_interrupt_disconnect(struct ps3_system_bus_device *dev);
     87int ps3_vuart_disable_interrupt_disconnect(struct ps3_system_bus_device *dev);
     88
     89#endif