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/dev/extres/syscon/syscon_if.m

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 # Copyright (c) 2015 Michal Meloun
    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 AND CONTRIBUTORS ``AS IS'' AND
   15 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24 # SUCH DAMAGE.
   25 #
   26 # $FreeBSD$
   27 #
   28 
   29 #include <machine/bus.h>
   30 
   31 INTERFACE syscon;
   32 
   33 HEADER {
   34         struct syscon;
   35         int syscon_get_handle_default(device_t dev, struct syscon **syscon);
   36 }
   37 
   38 CODE {
   39         #include <sys/systm.h>
   40         #include <sys/bus.h>
   41 
   42         int
   43         syscon_get_handle_default(device_t dev, struct syscon **syscon)
   44         {
   45                 device_t parent;
   46 
   47                 parent = device_get_parent(dev);
   48                 if (parent == NULL)
   49                         return (ENODEV);
   50                 return (SYSCON_GET_HANDLE(parent, syscon));
   51         }
   52 
   53         static void
   54         syscon_device_lock_default(device_t dev)
   55         {
   56 
   57                 panic("syscon_device_lock is not implemented");
   58         };
   59 
   60         static void
   61         syscon_device_unlock_default(device_t dev)
   62         {
   63 
   64                 panic("syscon_device_unlock is not implemented");
   65         };
   66 }
   67 
   68 METHOD int init {
   69         struct syscon   *syscon;
   70 };
   71 
   72 METHOD int uninit {
   73         struct syscon   *syscon;
   74 };
   75 
   76 /**
   77  * Accessor functions for syscon register space
   78  */
   79 METHOD uint32_t read_4 {
   80         struct syscon   *syscon;
   81         bus_size_t      offset;
   82 };
   83 
   84 METHOD int write_4 {
   85         struct syscon   *syscon;
   86         bus_size_t      offset;
   87         uint32_t        val;
   88 };
   89 
   90 METHOD int modify_4 {
   91         struct syscon   *syscon;
   92         bus_size_t      offset;
   93         uint32_t        clear_bits;
   94         uint32_t        set_bits;
   95 };
   96 
   97 /**
   98  * Unlocked verion of access function
   99  */
  100 METHOD uint32_t unlocked_read_4 {
  101         struct syscon   *syscon;
  102         bus_size_t      offset;
  103 };
  104 
  105 METHOD int unlocked_write_4 {
  106         struct syscon   *syscon;
  107         bus_size_t      offset;
  108         uint32_t        val;
  109 };
  110 
  111 METHOD int unlocked_modify_4 {
  112         struct syscon   *syscon;
  113         bus_size_t      offset;
  114         uint32_t        clear_bits;
  115         uint32_t        set_bits;
  116 };
  117 
  118 /**
  119 * Locking for exclusive access to underlying device
  120 */
  121 METHOD void device_lock {
  122         device_t        dev;
  123 } DEFAULT syscon_device_lock_default;
  124 
  125 METHOD void device_unlock {
  126         device_t        dev;
  127 } DEFAULT syscon_device_unlock_default;
  128 
  129 /**
  130  * Get syscon handle from parent driver
  131  */
  132 METHOD int get_handle {
  133         device_t        dev;
  134         struct syscon   **syscon;
  135 } DEFAULT syscon_get_handle_default;

Cache object: 22e7d1eedffd65e2f6d844accf6f50ec


[ 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.