1 /*- 2 * SPDX-License-Identifier: BSD-3-Clause 3 * 4 * Copyright (c) 2006 Michael Lorenz 5 * Copyright (c) 2008 Nathan Whitehorn 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. Neither the name of The NetBSD Foundation nor the names of its 17 * contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 */ 33 34 #ifndef _POWERPC_CUDAVAR_H_ 35 #define _POWERPC_CUDAVAR_H_ 36 37 #define CUDA_DEVSTR "Apple CUDA I/O Controller" 38 #define CUDA_MAXPACKETS 10 39 40 /* Cuda addresses */ 41 #define CUDA_ADB 0 42 #define CUDA_PSEUDO 1 43 #define CUDA_ERROR 2 /* error codes? */ 44 #define CUDA_TIMER 3 45 #define CUDA_POWER 4 46 #define CUDA_IIC 5 /* XXX ??? */ 47 #define CUDA_PMU 6 48 #define CUDA_ADB_QUERY 7 49 50 /* Cuda commands */ 51 #define CMD_AUTOPOLL 1 52 #define CMD_READ_RTC 3 53 #define CMD_WRITE_RTC 9 54 #define CMD_POWEROFF 10 55 #define CMD_RESET 17 56 #define CMD_IIC 34 57 58 /* Cuda state codes */ 59 #define CUDA_NOTREADY 0x1 /* has not been initialized yet */ 60 #define CUDA_IDLE 0x2 /* the bus is currently idle */ 61 #define CUDA_OUT 0x3 /* sending out a command */ 62 #define CUDA_IN 0x4 /* receiving data */ 63 #define CUDA_POLLING 0x5 /* polling - II only */ 64 65 struct cuda_packet { 66 uint8_t len; 67 uint8_t type; 68 69 uint8_t data[253]; 70 STAILQ_ENTRY(cuda_packet) pkt_q; 71 }; 72 73 STAILQ_HEAD(cuda_pktq, cuda_packet); 74 75 struct cuda_softc { 76 device_t sc_dev; 77 int sc_memrid; 78 struct resource *sc_memr; 79 int sc_irqrid; 80 struct resource *sc_irq; 81 void *sc_ih; 82 83 struct mtx sc_mutex; 84 85 device_t adb_bus; 86 87 int sc_node; 88 volatile int sc_state; 89 int sc_waiting; 90 int sc_polling; 91 int sc_iic_done; 92 volatile int sc_autopoll; 93 uint32_t sc_rtc; 94 95 int sc_i2c_read_len; 96 97 /* internal buffers */ 98 uint8_t sc_in[256]; 99 uint8_t sc_out[256]; 100 int sc_sent; 101 int sc_out_length; 102 int sc_received; 103 104 struct cuda_packet sc_pkts[CUDA_MAXPACKETS]; 105 struct cuda_pktq sc_inq; 106 struct cuda_pktq sc_outq; 107 struct cuda_pktq sc_freeq; 108 }; 109 110 #endif /* _POWERPC_CUDAVAR_H_ */ 111