The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/arm/broadcom/bcm2835/bcm2835_firmware.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause
    3  *
    4  * Copyright (c) 2020 Andrew Turner
    5  *
    6  * This work was supported by Innovate UK project 105694, "Digital Security
    7  * by Design (DSbD) Technology Platform Prototype".
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  *
   18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   28  * SUCH DAMAGE.
   29  *
   30  * $FreeBSD$
   31  */
   32 
   33 #ifndef _BCM2835_FIRMWARE_H_
   34 #define _BCM2835_FIRMWARE_H_
   35 
   36 #define BCM2835_FIRMWARE_TAG_GET_CLOCK_RATE             0x00030002
   37 #define BCM2835_FIRMWARE_TAG_SET_CLOCK_RATE             0x00038002
   38 #define BCM2835_FIRMWARE_TAG_GET_MAX_CLOCK_RATE         0x00030004
   39 #define BCM2835_FIRMWARE_TAG_GET_MIN_CLOCK_RATE         0x00030007
   40 
   41 #define BCM2835_FIRMWARE_CLOCK_ID_EMMC                  0x00000001
   42 #define BCM2835_FIRMWARE_CLOCK_ID_UART                  0x00000002
   43 #define BCM2835_FIRMWARE_CLOCK_ID_ARM                   0x00000003
   44 #define BCM2835_FIRMWARE_CLOCK_ID_CORE                  0x00000004
   45 #define BCM2835_FIRMWARE_CLOCK_ID_V3D                   0x00000005
   46 #define BCM2835_FIRMWARE_CLOCK_ID_H264                  0x00000006
   47 #define BCM2835_FIRMWARE_CLOCK_ID_ISP                   0x00000007
   48 #define BCM2835_FIRMWARE_CLOCK_ID_SDRAM                 0x00000008
   49 #define BCM2835_FIRMWARE_CLOCK_ID_PIXEL                 0x00000009
   50 #define BCM2835_FIRMWARE_CLOCK_ID_PWM                   0x0000000a
   51 #define BCM2838_FIRMWARE_CLOCK_ID_EMMC2                 0x0000000c
   52 
   53 union msg_get_clock_rate_body {
   54         struct {
   55                 uint32_t clock_id;
   56         } req;
   57         struct {
   58                 uint32_t clock_id;
   59                 uint32_t rate_hz;
   60         } resp;
   61 };
   62 
   63 union msg_set_clock_rate_body {
   64         struct {
   65                 uint32_t clock_id;
   66                 uint32_t rate_hz;
   67         } req;
   68         struct {
   69                 uint32_t clock_id;
   70                 uint32_t rate_hz;
   71         } resp;
   72 };
   73 
   74 #define BCM2835_FIRMWARE_TAG_GET_VOLTAGE                0x00030003
   75 #define BCM2835_FIRMWARE_TAG_SET_VOLTAGE                0x00038003
   76 #define BCM2835_FIRMWARE_TAG_GET_MAX_VOLTAGE            0x00030005
   77 #define BCM2835_FIRMWARE_TAG_GET_MIN_VOLTAGE            0x00030008
   78 
   79 #define BCM2835_FIRMWARE_VOLTAGE_ID_CORE                0x00000001
   80 #define BCM2835_FIRMWARE_VOLTAGE_ID_SDRAM_C             0x00000002
   81 #define BCM2835_FIRMWARE_VOLTAGE_ID_SDRAM_P             0x00000003
   82 #define BCM2835_FIRMWARE_VOLTAGE_ID_SDRAM_I             0x00000004
   83 
   84 union msg_get_voltage_body {
   85         struct {
   86                 uint32_t voltage_id;
   87         } req;
   88         struct {
   89                 uint32_t voltage_id;
   90                 uint32_t value;
   91         } resp;
   92 };
   93 
   94 union msg_set_voltage_body {
   95         struct {
   96                 uint32_t voltage_id;
   97                 uint32_t value;
   98         } req;
   99         struct {
  100                 uint32_t voltage_id;
  101                 uint32_t value;
  102         } resp;
  103 };
  104 
  105 #define BCM2835_FIRMWARE_TAG_GET_TEMPERATURE            0x00030006
  106 #define BCM2835_FIRMWARE_TAG_GET_MAX_TEMPERATURE        0x0003000a
  107 
  108 union msg_get_temperature_body {
  109         struct {
  110                 uint32_t temperature_id;
  111         } req;
  112         struct {
  113                 uint32_t temperature_id;
  114                 uint32_t value;
  115         } resp;
  116 };
  117 
  118 #define BCM2835_FIRMWARE_TAG_GET_TURBO                  0x00030009
  119 #define BCM2835_FIRMWARE_TAG_SET_TURBO                  0x00038009
  120 
  121 #define BCM2835_FIRMWARE_TURBO_ON                       1
  122 #define BCM2835_FIRMWARE_TURBO_OFF                      0
  123 
  124 union msg_get_turbo_body {
  125         struct {
  126                 uint32_t id;
  127         } req;
  128         struct {
  129                 uint32_t id;
  130                 uint32_t level;
  131         } resp;
  132 };
  133 
  134 union msg_set_turbo_body {
  135         struct {
  136                 uint32_t id;
  137                 uint32_t level;
  138         } req;
  139         struct {
  140                 uint32_t id;
  141                 uint32_t level;
  142         } resp;
  143 };
  144 
  145 #define BCM2835_FIRMWARE_TAG_GET_GPIO_STATE             0x00030041
  146 #define BCM2835_FIRMWARE_TAG_SET_GPIO_STATE             0x00038041
  147 #define BCM2835_FIRMWARE_TAG_GET_GPIO_CONFIG            0x00030043
  148 #define BCM2835_FIRMWARE_TAG_SET_GPIO_CONFIG            0x00038043
  149 
  150 #define BCM2835_FIRMWARE_GPIO_IN                        0
  151 #define BCM2835_FIRMWARE_GPIO_OUT                       1
  152 
  153 union msg_get_gpio_state {
  154         struct {
  155                 uint32_t gpio;
  156         } req;
  157         struct {
  158                 uint32_t gpio;
  159                 uint32_t state;
  160         } resp;
  161 };
  162 
  163 union msg_set_gpio_state {
  164         struct {
  165                 uint32_t gpio;
  166                 uint32_t state;
  167         } req;
  168         struct {
  169                 uint32_t gpio;
  170         } resp;
  171 };
  172 
  173 union msg_get_gpio_config {
  174         struct {
  175                 uint32_t gpio;
  176         } req;
  177         struct {
  178                 uint32_t gpio;
  179                 uint32_t dir;
  180                 uint32_t pol;
  181                 uint32_t term_en;
  182                 uint32_t term_pull_up;
  183         } resp;
  184 };
  185 
  186 union msg_set_gpio_config {
  187         struct {
  188                 uint32_t gpio;
  189                 uint32_t dir;
  190                 uint32_t pol;
  191                 uint32_t term_en;
  192                 uint32_t term_pull_up;
  193                 uint32_t state;
  194         } req;
  195         struct {
  196                 uint32_t gpio;
  197         } resp;
  198 };
  199 
  200 int bcm2835_firmware_property(device_t, uint32_t, void *, size_t);
  201 
  202 #endif

Cache object: 14f9c022a88f2227aa3d20614027a55d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.