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/ichiic/ig4_var.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  * Copyright (c) 2014 The DragonFly Project.  All rights reserved.
    3  *
    4  * This code is derived from software contributed to The DragonFly Project
    5  * by Matthew Dillon <dillon@backplane.com> and was subsequently ported
    6  * to FreeBSD by Michael Gmelin <freebsd@grem.de>
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  *
   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
   16  *    the documentation and/or other materials provided with the
   17  *    distribution.
   18  * 3. Neither the name of The DragonFly Project nor the names of its
   19  *    contributors may be used to endorse or promote products derived
   20  *    from this software without specific, prior written permission.
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   23  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
   26  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
   27  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
   28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   30  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   31  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   32  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   33  * SUCH DAMAGE.
   34  *
   35  * $FreeBSD$
   36  */
   37 
   38 #ifndef _ICHIIC_IG4_VAR_H_
   39 #define _ICHIIC_IG4_VAR_H_
   40 
   41 #include "bus_if.h"
   42 #include "device_if.h"
   43 #include "pci_if.h"
   44 #include "iicbus_if.h"
   45 
   46 enum ig4_vers {
   47         IG4_HASWELL,
   48         IG4_ATOM,
   49         IG4_SKYLAKE,
   50         IG4_APL,
   51         IG4_CANNONLAKE,
   52         IG4_TIGERLAKE,
   53         IG4_GEMINILAKE
   54 };
   55 
   56 /* Controller has additional registers */
   57 #define IG4_HAS_ADDREGS(vers)   ((vers) >= IG4_SKYLAKE)
   58 
   59 struct ig4_hw {
   60         uint32_t        ic_clock_rate;  /* MHz */
   61         uint32_t        sda_fall_time;  /* nsec */
   62         uint32_t        scl_fall_time;  /* nsec */
   63         uint32_t        sda_hold_time;  /* nsec */
   64         int             txfifo_depth;
   65         int             rxfifo_depth;
   66 };
   67 
   68 struct ig4_cfg {
   69         uint32_t        version;
   70         uint32_t        bus_speed;
   71         uint16_t        ss_scl_hcnt;
   72         uint16_t        ss_scl_lcnt;
   73         uint16_t        ss_sda_hold;
   74         uint16_t        fs_scl_hcnt;
   75         uint16_t        fs_scl_lcnt;
   76         uint16_t        fs_sda_hold;
   77         int             txfifo_depth;
   78         int             rxfifo_depth;
   79 };
   80 
   81 struct ig4iic_softc {
   82         device_t        dev;
   83         device_t        iicbus;
   84         struct resource *regs_res;
   85         int             regs_rid;
   86         struct resource *intr_res;
   87         int             intr_rid;
   88         void            *intr_handle;
   89         int             intr_type;
   90         enum ig4_vers   version;
   91         struct ig4_cfg  cfg;
   92         uint32_t        intr_mask;
   93         uint8_t         last_slave;
   94         int             platform_attached : 1;
   95         int             use_10bit : 1;
   96         int             slave_valid : 1;
   97         int             poll: 1;
   98 
   99         /*
  100          * Locking semantics:
  101          *
  102          * Functions implementing the icbus interface that interact
  103          * with the controller acquire an exclusive lock on call_lock
  104          * to prevent interleaving of calls to the interface.
  105          *
  106          * io_lock is used as condition variable to synchronize active process
  107          * with the interrupt handler. It should not be used for tasks other
  108          * than waiting for interrupt and passing parameters to and from
  109          * it's handler.
  110          */
  111         struct sx       call_lock;
  112         struct mtx      io_lock;
  113 };
  114 
  115 typedef struct ig4iic_softc ig4iic_softc_t;
  116 
  117 /* Attach/Detach called from ig4iic_pci_*() */
  118 int ig4iic_attach(ig4iic_softc_t *sc);
  119 int ig4iic_detach(ig4iic_softc_t *sc);
  120 int ig4iic_suspend(ig4iic_softc_t *sc);
  121 int ig4iic_resume(ig4iic_softc_t *sc);
  122 
  123 /* iicbus methods */
  124 extern iicbus_transfer_t ig4iic_transfer;
  125 extern iicbus_reset_t   ig4iic_reset;
  126 extern iicbus_callback_t ig4iic_callback;
  127 
  128 #endif /* _ICHIIC_IG4_VAR_H_ */

Cache object: d76b466007177c23a0ef46c325fcd5ba


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