xref: /freebsd/sys/dev/smbus/smbus_if.m (revision 031beb4e239bfce798af17f5fe8dba8bcaf13d99)
1098ca2bdSWarner Losh#-
2d70424edSNicolas Souchu# Copyright (c) 1998 Nicolas Souchu
3d70424edSNicolas Souchu# All rights reserved.
4d70424edSNicolas Souchu#
5d70424edSNicolas Souchu# Redistribution and use in source and binary forms, with or without
6d70424edSNicolas Souchu# modification, are permitted provided that the following conditions
7d70424edSNicolas Souchu# are met:
8d70424edSNicolas Souchu# 1. Redistributions of source code must retain the above copyright
9d70424edSNicolas Souchu#    notice, this list of conditions and the following disclaimer.
10d70424edSNicolas Souchu# 2. Redistributions in binary form must reproduce the above copyright
11d70424edSNicolas Souchu#    notice, this list of conditions and the following disclaimer in the
12d70424edSNicolas Souchu#    documentation and/or other materials provided with the distribution.
13d70424edSNicolas Souchu#
14d70424edSNicolas Souchu# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15d70424edSNicolas Souchu# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16d70424edSNicolas Souchu# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17d70424edSNicolas Souchu# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18d70424edSNicolas Souchu# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19d70424edSNicolas Souchu# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20d70424edSNicolas Souchu# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21d70424edSNicolas Souchu# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22d70424edSNicolas Souchu# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23d70424edSNicolas Souchu# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24d70424edSNicolas Souchu# SUCH DAMAGE.
25d70424edSNicolas Souchu#
26d70424edSNicolas Souchu#
27d70424edSNicolas Souchu
28f7b77691SDoug Rabson#include <sys/bus.h>
29f7b77691SDoug Rabson
307a8ecb9eSNicolas SouchuINTERFACE smbus;
31d70424edSNicolas Souchu
32d70424edSNicolas Souchu#
333ab1f056SNicolas Souchu# Interpret interrupt
34d70424edSNicolas Souchu#
35d70424edSNicolas SouchuMETHOD void intr {
36d70424edSNicolas Souchu	device_t dev;
37d70424edSNicolas Souchu	u_char devaddr;
38d70424edSNicolas Souchu	char low;
39d70424edSNicolas Souchu	char high;
40d70424edSNicolas Souchu	int error;
41d70424edSNicolas Souchu};
42d70424edSNicolas Souchu
43d70424edSNicolas Souchu#
443ab1f056SNicolas Souchu# smbus callback
453ab1f056SNicolas Souchu#
463ab1f056SNicolas SouchuMETHOD int callback {
473ab1f056SNicolas Souchu	device_t dev;
483ab1f056SNicolas Souchu	int index;
497048a99cSJohn Baldwin	void *data;
503ab1f056SNicolas Souchu};
513ab1f056SNicolas Souchu
523ab1f056SNicolas Souchu#
53d70424edSNicolas Souchu# Quick command
54d70424edSNicolas Souchu#
55d70424edSNicolas SouchuMETHOD int quick {
56d70424edSNicolas Souchu	device_t dev;
57d70424edSNicolas Souchu	u_char slave;
58d70424edSNicolas Souchu	int how;
59d70424edSNicolas Souchu};
60d70424edSNicolas Souchu
61d70424edSNicolas Souchu#
62d70424edSNicolas Souchu# Send Byte command
63d70424edSNicolas Souchu#
64d70424edSNicolas SouchuMETHOD int sendb {
65d70424edSNicolas Souchu	device_t dev;
66d70424edSNicolas Souchu	u_char slave;
67d70424edSNicolas Souchu	char byte;
68d70424edSNicolas Souchu};
69d70424edSNicolas Souchu
70d70424edSNicolas Souchu#
71d70424edSNicolas Souchu# Receive Byte command
72d70424edSNicolas Souchu#
73d70424edSNicolas SouchuMETHOD int recvb {
74d70424edSNicolas Souchu	device_t dev;
75d70424edSNicolas Souchu	u_char slave;
76d70424edSNicolas Souchu	char *byte;
77d70424edSNicolas Souchu};
78d70424edSNicolas Souchu
79d70424edSNicolas Souchu#
80d70424edSNicolas Souchu# Write Byte command
81d70424edSNicolas Souchu#
82d70424edSNicolas SouchuMETHOD int writeb {
83d70424edSNicolas Souchu	device_t dev;
84d70424edSNicolas Souchu	u_char slave;
85d70424edSNicolas Souchu	char cmd;
86d70424edSNicolas Souchu	char byte;
87d70424edSNicolas Souchu};
88d70424edSNicolas Souchu
89d70424edSNicolas Souchu#
90d70424edSNicolas Souchu# Write Word command
91d70424edSNicolas Souchu#
92d70424edSNicolas SouchuMETHOD int writew {
93d70424edSNicolas Souchu	device_t dev;
94d70424edSNicolas Souchu	u_char slave;
95d70424edSNicolas Souchu	char cmd;
96d70424edSNicolas Souchu	short word;
97d70424edSNicolas Souchu};
98d70424edSNicolas Souchu
99d70424edSNicolas Souchu#
100d70424edSNicolas Souchu# Read Byte command
101d70424edSNicolas Souchu#
102d70424edSNicolas SouchuMETHOD int readb {
103d70424edSNicolas Souchu	device_t dev;
104d70424edSNicolas Souchu	u_char slave;
105d70424edSNicolas Souchu	char cmd;
106d70424edSNicolas Souchu	char *byte;
107d70424edSNicolas Souchu};
108d70424edSNicolas Souchu
109d70424edSNicolas Souchu#
110d70424edSNicolas Souchu# Read Word command
111d70424edSNicolas Souchu#
112d70424edSNicolas SouchuMETHOD int readw {
113d70424edSNicolas Souchu	device_t dev;
114d70424edSNicolas Souchu	u_char slave;
115d70424edSNicolas Souchu	char cmd;
116d70424edSNicolas Souchu	short *word;
117d70424edSNicolas Souchu};
118d70424edSNicolas Souchu
119d70424edSNicolas Souchu#
120d70424edSNicolas Souchu# Process Call command
121d70424edSNicolas Souchu#
122d70424edSNicolas SouchuMETHOD int pcall {
123d70424edSNicolas Souchu	device_t dev;
124d70424edSNicolas Souchu	u_char slave;
125d70424edSNicolas Souchu	char cmd;
126d70424edSNicolas Souchu	short sdata;
127d70424edSNicolas Souchu	short *rdata;
128d70424edSNicolas Souchu};
129d70424edSNicolas Souchu
130d70424edSNicolas Souchu#
131d70424edSNicolas Souchu# Block Write command
132d70424edSNicolas Souchu#
133623bdbdbSNicolas SouchuMETHOD int bwrite {
134d70424edSNicolas Souchu	device_t dev;
135d70424edSNicolas Souchu	u_char slave;
136d70424edSNicolas Souchu	char cmd;
137d70424edSNicolas Souchu	u_char count;
138d70424edSNicolas Souchu	char *buf;
139d70424edSNicolas Souchu};
140d70424edSNicolas Souchu
141d70424edSNicolas Souchu#
142d70424edSNicolas Souchu# Block Read command
143d70424edSNicolas Souchu#
144623bdbdbSNicolas SouchuMETHOD int bread {
145d70424edSNicolas Souchu	device_t dev;
146d70424edSNicolas Souchu	u_char slave;
147d70424edSNicolas Souchu	char cmd;
1487048a99cSJohn Baldwin	u_char *count;
149d70424edSNicolas Souchu	char *buf;
150d70424edSNicolas Souchu};
151