bhnd_chipc_if.m revision 300548
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: head/sys/dev/bhnd/cores/chipc/bhnd_chipc_if.m 300548 2016-05-24 01:12:19Z adrian $ 26 27#include <sys/types.h> 28#include <sys/bus.h> 29 30#include <dev/bhnd/bhnd.h> 31#include <dev/bhnd/nvram/bhnd_nvram.h> 32 33INTERFACE bhnd_chipc; 34 35# 36# bhnd(4) ChipCommon interface. 37# 38 39HEADER { 40 /* forward declarations */ 41 struct chipc_caps; 42} 43 44/** 45 * Return the preferred NVRAM data source. 46 * 47 * @param dev A bhnd(4) ChipCommon device. 48 */ 49METHOD bhnd_nvram_src_t nvram_src { 50 device_t dev; 51} 52 53/** 54 * Write @p value with @p mask directly to the chipctrl register. 55 * 56 * @param dev A bhnd(4) ChipCommon device. 57 * @param value The value to write. 58 * @param mask The mask of bits to be written from @p value. 59 * 60 * Drivers should only use function for functionality that is not 61 * available via another bhnd_chipc() function. 62 * 63 * Currently, the only known valid use-case is in implementing a hardware 64 * work-around for the BCM4321 PCIe rev7 core revision. 65 */ 66METHOD void write_chipctrl { 67 device_t dev; 68 uint32_t value; 69 uint32_t mask; 70} 71 72/** 73 * Return a borrowed reference to ChipCommon's capability 74 * table. 75 * 76 * @param dev A bhnd(4) ChipCommon device 77 */ 78METHOD struct chipc_caps * get_caps { 79 device_t dev; 80} 81 82/** 83 * Enable hardware access to the SPROM. 84 * 85 * @param sc chipc driver state. 86 * 87 * @retval 0 success 88 * @retval EBUSY If enabling the hardware may conflict with 89 * other active devices. 90 */ 91METHOD int enable_sprom { 92 device_t dev; 93} 94 95/** 96 * Release hardware access to the SPROM. 97 * 98 * @param sc chipc driver state. 99 */ 100METHOD void disable_sprom { 101 device_t dev; 102} 103