1#- 2# Copyright (c) 2016 Landon Fuller <landon@landonf.org> 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17# IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 23# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24# 25 26#include <sys/types.h> 27#include <sys/bus.h> 28 29#include <dev/bhnd/bhnd.h> 30 31INTERFACE bhnd_chipc; 32 33# 34# bhnd(4) ChipCommon interface. 35# 36 37HEADER { 38 /* forward declarations */ 39 struct chipc_caps; 40} 41 42CODE { 43 static struct chipc_caps * 44 bhnd_chipc_null_get_caps(device_t dev) 45 { 46 panic("bhnd_chipc_generic_get_caps unimplemented"); 47 } 48} 49 50 51/** 52 * Return the current value of the chipstatus register. 53 * 54 * @param dev A bhnd(4) ChipCommon device. 55 * 56 * Drivers should only use function for functionality that is not 57 * available via another bhnd_chipc() function. 58 * 59 * @returns The chipstatus register value, or 0 if undefined by this 60 * hardware (e.g. if @p dev is an EXTIF core). 61 */ 62METHOD uint32_t read_chipst { 63 device_t dev; 64} 65 66/** 67 * Write @p value with @p mask directly to the chipctrl register. 68 * 69 * @param dev A bhnd(4) ChipCommon device. 70 * @param value The value to write. 71 * @param mask The mask of bits to be written from @p value. 72 * 73 * Drivers should only use function for functionality that is not 74 * available via another bhnd_chipc() function. 75 * 76 * Currently, the only known valid use-case is in implementing a hardware 77 * work-around for the BCM4321 PCIe rev7 core revision. 78 */ 79METHOD void write_chipctrl { 80 device_t dev; 81 uint32_t value; 82 uint32_t mask; 83} 84 85/** 86 * Return a borrowed reference to ChipCommon's capability 87 * table. 88 * 89 * @param dev A bhnd(4) ChipCommon device 90 */ 91METHOD struct chipc_caps * get_caps { 92 device_t dev; 93} DEFAULT bhnd_chipc_null_get_caps; 94 95/** 96 * Enable hardware access to the SPROM/OTP source. 97 * 98 * @param sc chipc driver state. 99 * 100 * @retval 0 success 101 * @retval EBUSY If enabling the hardware may conflict with 102 * other active devices. 103 */ 104METHOD int enable_sprom { 105 device_t dev; 106} 107 108/** 109 * Release hardware access to the SPROM/OTP source. 110 * 111 * @param sc chipc driver state. 112 */ 113METHOD void disable_sprom { 114 device_t dev; 115} 116