···1+/*2+ * linux/drivers/mfd/mcp.h3+ *4+ * Copyright (C) 2001 Russell King, All Rights Reserved.5+ *6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License as published by8+ * the Free Software Foundation; either version 2 of the License.9+ */10+#ifndef MCP_H11+#define MCP_H12+13+struct mcp_ops;14+15+struct mcp {16+ struct module *owner;17+ struct mcp_ops *ops;18+ spinlock_t lock;19+ int use_count;20+ unsigned int sclk_rate;21+ unsigned int rw_timeout;22+ dma_device_t dma_audio_rd;23+ dma_device_t dma_audio_wr;24+ dma_device_t dma_telco_rd;25+ dma_device_t dma_telco_wr;26+ struct device attached_device;27+};28+29+struct mcp_ops {30+ void (*set_telecom_divisor)(struct mcp *, unsigned int);31+ void (*set_audio_divisor)(struct mcp *, unsigned int);32+ void (*reg_write)(struct mcp *, unsigned int, unsigned int);33+ unsigned int (*reg_read)(struct mcp *, unsigned int);34+ void (*enable)(struct mcp *);35+ void (*disable)(struct mcp *);36+};37+38+void mcp_set_telecom_divisor(struct mcp *, unsigned int);39+void mcp_set_audio_divisor(struct mcp *, unsigned int);40+void mcp_reg_write(struct mcp *, unsigned int, unsigned int);41+unsigned int mcp_reg_read(struct mcp *, unsigned int);42+void mcp_enable(struct mcp *);43+void mcp_disable(struct mcp *);44+#define mcp_get_sclk_rate(mcp) ((mcp)->sclk_rate)45+46+struct mcp *mcp_host_alloc(struct device *, size_t);47+int mcp_host_register(struct mcp *);48+void mcp_host_unregister(struct mcp *);49+50+struct mcp_driver {51+ struct device_driver drv;52+ int (*probe)(struct mcp *);53+ void (*remove)(struct mcp *);54+ int (*suspend)(struct mcp *, pm_message_t);55+ int (*resume)(struct mcp *);56+};57+58+int mcp_driver_register(struct mcp_driver *);59+void mcp_driver_unregister(struct mcp_driver *);60+61+#define mcp_get_drvdata(mcp) dev_get_drvdata(&(mcp)->attached_device)62+#define mcp_set_drvdata(mcp,d) dev_set_drvdata(&(mcp)->attached_device, d)63+64+#define mcp_priv(mcp) ((void *)((mcp)+1))65+66+#endif
+21
include/asm-arm/arch-sa1100/mcp.h
···000000000000000000000
···1+/*2+ * linux/include/asm-arm/arch-sa1100/mcp.h3+ *4+ * Copyright (C) 2005 Russell King.5+ *6+ * This program is free software; you can redistribute it and/or modify7+ * it under the terms of the GNU General Public License version 2 as8+ * published by the Free Software Foundation.9+ */10+#ifndef __ASM_ARM_ARCH_MCP_H11+#define __ASM_ARM_ARCH_MCP_H12+13+#include <linux/types.h>14+15+struct mcp_plat_data {16+ u32 mccr0;17+ u32 mccr1;18+ unsigned int sclk_rate;19+};20+21+#endif