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# $FreeBSD$ 26 27#include <sys/types.h> 28#include <sys/bus.h> 29 30#include <dev/bhnd/bhnd.h> 31 32INTERFACE bhnd_chipc; 33 34# 35# bhnd(4) ChipCommon interface. 36# 37 38HEADER { 39 /* forward declarations */ 40 struct chipc_caps; 41} 42 43CODE { 44 static struct chipc_caps * 45 bhnd_chipc_null_get_caps(device_t dev) 46 { 47 panic("bhnd_chipc_generic_get_caps unimplemented"); 48 } 49} 50 51 52/** 53 * Return the current value of the chipstatus register. 54 * 55 * @param dev A bhnd(4) ChipCommon device. 56 * 57 * Drivers should only use function for functionality that is not 58 * available via another bhnd_chipc() function. 59 * 60 * @returns The chipstatus register value, or 0 if undefined by this 61 * hardware (e.g. if @p dev is an EXTIF core). 62 */ 63METHOD uint32_t read_chipst { 64 device_t dev; 65} 66 67/** 68 * Write @p value with @p mask directly to the chipctrl register. 69 * 70 * @param dev A bhnd(4) ChipCommon device. 71 * @param value The value to write. 72 * @param mask The mask of bits to be written from @p value. 73 * 74 * Drivers should only use function for functionality that is not 75 * available via another bhnd_chipc() function. 76 * 77 * Currently, the only known valid use-case is in implementing a hardware 78 * work-around for the BCM4321 PCIe rev7 core revision. 79 */ 80METHOD void write_chipctrl { 81 device_t dev; 82 uint32_t value; 83 uint32_t mask; 84} 85 86/** 87 * Return a borrowed reference to ChipCommon's capability 88 * table. 89 * 90 * @param dev A bhnd(4) ChipCommon device 91 */ 92METHOD struct chipc_caps * get_caps { 93 device_t dev; 94} DEFAULT bhnd_chipc_null_get_caps; 95 96/** 97 * Enable hardware access to the SPROM/OTP source. 98 * 99 * @param sc chipc driver state. 100 * 101 * @retval 0 success 102 * @retval EBUSY If enabling the hardware may conflict with 103 * other active devices. 104 */ 105METHOD int enable_sprom { 106 device_t dev; 107} 108 109/** 110 * Release hardware access to the SPROM/OTP source. 111 * 112 * @param sc chipc driver state. 113 */ 114METHOD void disable_sprom { 115 device_t dev; 116} 117