bhnd_chipc_if.m revision 303975
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: releng/11.0/sys/dev/bhnd/cores/chipc/bhnd_chipc_if.m 302189 2016-06-25 04:33:00Z landonf $ 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 * Write @p value with @p mask directly to the chipctrl register. 53 * 54 * @param dev A bhnd(4) ChipCommon device. 55 * @param value The value to write. 56 * @param mask The mask of bits to be written from @p value. 57 * 58 * Drivers should only use function for functionality that is not 59 * available via another bhnd_chipc() function. 60 * 61 * Currently, the only known valid use-case is in implementing a hardware 62 * work-around for the BCM4321 PCIe rev7 core revision. 63 */ 64METHOD void write_chipctrl { 65 device_t dev; 66 uint32_t value; 67 uint32_t mask; 68} 69 70/** 71 * Return a borrowed reference to ChipCommon's capability 72 * table. 73 * 74 * @param dev A bhnd(4) ChipCommon device 75 */ 76METHOD struct chipc_caps * get_caps { 77 device_t dev; 78} DEFAULT bhnd_chipc_null_get_caps; 79 80/** 81 * Enable hardware access to the SPROM/OTP source. 82 * 83 * @param sc chipc driver state. 84 * 85 * @retval 0 success 86 * @retval EBUSY If enabling the hardware may conflict with 87 * other active devices. 88 */ 89METHOD int enable_sprom { 90 device_t dev; 91} 92 93/** 94 * Release hardware access to the SPROM/OTP source. 95 * 96 * @param sc chipc driver state. 97 */ 98METHOD void disable_sprom { 99 device_t dev; 100} 101