xref: /freebsd-src/sys/dev/flash/qspi_if.m (revision 031beb4e239bfce798af17f5fe8dba8bcaf13d99)
1*eb69ed7fSRuslan Bukin#-
2*eb69ed7fSRuslan Bukin# Copyright (c) 2017-2018 Ruslan Bukin <br@bsdpad.com>
3*eb69ed7fSRuslan Bukin# All rights reserved.
4*eb69ed7fSRuslan Bukin#
5*eb69ed7fSRuslan Bukin# This software was developed by SRI International and the University of
6*eb69ed7fSRuslan Bukin# Cambridge Computer Laboratory under DARPA/AFRL contract FA8750-10-C-0237
7*eb69ed7fSRuslan Bukin# ("CTSRD"), as part of the DARPA CRASH research programme.
8*eb69ed7fSRuslan Bukin#
9*eb69ed7fSRuslan Bukin# Redistribution and use in source and binary forms, with or without
10*eb69ed7fSRuslan Bukin# modification, are permitted provided that the following conditions
11*eb69ed7fSRuslan Bukin# are met:
12*eb69ed7fSRuslan Bukin# 1. Redistributions of source code must retain the above copyright
13*eb69ed7fSRuslan Bukin#    notice, this list of conditions and the following disclaimer.
14*eb69ed7fSRuslan Bukin# 2. Redistributions in binary form must reproduce the above copyright
15*eb69ed7fSRuslan Bukin#    notice, this list of conditions and the following disclaimer in the
16*eb69ed7fSRuslan Bukin#    documentation and/or other materials provided with the distribution.
17*eb69ed7fSRuslan Bukin#
18*eb69ed7fSRuslan Bukin# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19*eb69ed7fSRuslan Bukin# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20*eb69ed7fSRuslan Bukin# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21*eb69ed7fSRuslan Bukin# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22*eb69ed7fSRuslan Bukin# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23*eb69ed7fSRuslan Bukin# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24*eb69ed7fSRuslan Bukin# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25*eb69ed7fSRuslan Bukin# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26*eb69ed7fSRuslan Bukin# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27*eb69ed7fSRuslan Bukin# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28*eb69ed7fSRuslan Bukin# SUCH DAMAGE.
29*eb69ed7fSRuslan Bukin#
30*eb69ed7fSRuslan Bukin#
31*eb69ed7fSRuslan Bukin
32*eb69ed7fSRuslan Bukin#include <sys/bus.h>
33*eb69ed7fSRuslan Bukin#include <sys/bio.h>
34*eb69ed7fSRuslan Bukin
35*eb69ed7fSRuslan BukinINTERFACE qspi;
36*eb69ed7fSRuslan Bukin
37*eb69ed7fSRuslan BukinMETHOD int read {
38*eb69ed7fSRuslan Bukin	device_t dev;
39*eb69ed7fSRuslan Bukin	device_t child;
40*eb69ed7fSRuslan Bukin	struct bio *bp;
41*eb69ed7fSRuslan Bukin	off_t offset;
42*eb69ed7fSRuslan Bukin	caddr_t data;
43*eb69ed7fSRuslan Bukin	off_t count;
44*eb69ed7fSRuslan Bukin};
45*eb69ed7fSRuslan Bukin
46*eb69ed7fSRuslan BukinMETHOD int write {
47*eb69ed7fSRuslan Bukin	device_t dev;
48*eb69ed7fSRuslan Bukin	device_t child;
49*eb69ed7fSRuslan Bukin	struct bio *bp;
50*eb69ed7fSRuslan Bukin	off_t offset;
51*eb69ed7fSRuslan Bukin	caddr_t data;
52*eb69ed7fSRuslan Bukin	off_t count;
53*eb69ed7fSRuslan Bukin};
54*eb69ed7fSRuslan Bukin
55*eb69ed7fSRuslan BukinMETHOD int erase {
56*eb69ed7fSRuslan Bukin	device_t dev;
57*eb69ed7fSRuslan Bukin	device_t child;
58*eb69ed7fSRuslan Bukin	off_t offset;
59*eb69ed7fSRuslan Bukin};
60*eb69ed7fSRuslan Bukin
61*eb69ed7fSRuslan BukinMETHOD int write_reg {
62*eb69ed7fSRuslan Bukin	device_t dev;
63*eb69ed7fSRuslan Bukin	device_t child;
64*eb69ed7fSRuslan Bukin	uint8_t opcode;
65*eb69ed7fSRuslan Bukin	uint8_t *addr;
66*eb69ed7fSRuslan Bukin	uint32_t len;
67*eb69ed7fSRuslan Bukin};
68*eb69ed7fSRuslan Bukin
69*eb69ed7fSRuslan BukinMETHOD int read_reg {
70*eb69ed7fSRuslan Bukin	device_t dev;
71*eb69ed7fSRuslan Bukin	device_t child;
72*eb69ed7fSRuslan Bukin	uint8_t opcode;
73*eb69ed7fSRuslan Bukin	uint8_t *addr;
74*eb69ed7fSRuslan Bukin	uint32_t len;
75*eb69ed7fSRuslan Bukin};
76