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

mcp.h (1647B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  linux/drivers/mfd/mcp.h
      4 *
      5 *  Copyright (C) 2001 Russell King, All Rights Reserved.
      6 */
      7#ifndef MCP_H
      8#define MCP_H
      9
     10#include <linux/device.h>
     11
     12struct mcp_ops;
     13
     14struct mcp {
     15	struct module	*owner;
     16	struct mcp_ops	*ops;
     17	spinlock_t	lock;
     18	int		use_count;
     19	unsigned int	sclk_rate;
     20	unsigned int	rw_timeout;
     21	struct device	attached_device;
     22};
     23
     24struct mcp_ops {
     25	void		(*set_telecom_divisor)(struct mcp *, unsigned int);
     26	void		(*set_audio_divisor)(struct mcp *, unsigned int);
     27	void		(*reg_write)(struct mcp *, unsigned int, unsigned int);
     28	unsigned int	(*reg_read)(struct mcp *, unsigned int);
     29	void		(*enable)(struct mcp *);
     30	void		(*disable)(struct mcp *);
     31};
     32
     33void mcp_set_telecom_divisor(struct mcp *, unsigned int);
     34void mcp_set_audio_divisor(struct mcp *, unsigned int);
     35void mcp_reg_write(struct mcp *, unsigned int, unsigned int);
     36unsigned int mcp_reg_read(struct mcp *, unsigned int);
     37void mcp_enable(struct mcp *);
     38void mcp_disable(struct mcp *);
     39#define mcp_get_sclk_rate(mcp)	((mcp)->sclk_rate)
     40
     41struct mcp *mcp_host_alloc(struct device *, size_t);
     42int mcp_host_add(struct mcp *, void *);
     43void mcp_host_del(struct mcp *);
     44void mcp_host_free(struct mcp *);
     45
     46struct mcp_driver {
     47	struct device_driver drv;
     48	int (*probe)(struct mcp *);
     49	void (*remove)(struct mcp *);
     50};
     51
     52int mcp_driver_register(struct mcp_driver *);
     53void mcp_driver_unregister(struct mcp_driver *);
     54
     55#define mcp_get_drvdata(mcp)	dev_get_drvdata(&(mcp)->attached_device)
     56#define mcp_set_drvdata(mcp,d)	dev_set_drvdata(&(mcp)->attached_device, d)
     57
     58static inline void *mcp_priv(struct mcp *mcp)
     59{
     60	return mcp + 1;
     61}
     62
     63#endif