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/xscale/ixp425/cambria_fled.c

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) 2008 Sam Leffler.  All rights reserved.
    3  *
    4  * Redistribution and use in source and binary forms, with or without
    5  * modification, are permitted provided that the following conditions
    6  * are met:
    7  * 1. Redistributions of source code must retain the above copyright
    8  *    notice, this list of conditions and the following disclaimer.
    9  * 2. Redistributions in binary form must reproduce the above copyright
   10  *    notice, this list of conditions and the following disclaimer in the
   11  *    documentation and/or other materials provided with the distribution.
   12  *
   13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   15  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   16  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   17  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   18  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   19  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   20  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   22  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   23  */
   24 
   25 #include <sys/cdefs.h>
   26 __FBSDID("$FreeBSD: releng/8.0/sys/arm/xscale/ixp425/cambria_fled.c 186352 2008-12-20 03:26:09Z sam $");
   27 /*
   28  * Cambria Front Panel LED sitting on the I2C bus.
   29  */
   30 #include <sys/param.h>
   31 #include <sys/systm.h>
   32 #include <sys/kernel.h>
   33 #include <sys/module.h>
   34 #include <sys/bus.h>
   35 
   36 #include <machine/bus.h>
   37 
   38 #include <dev/iicbus/iiconf.h>
   39 #include <dev/led/led.h>
   40 
   41 #include "iicbus_if.h"
   42 
   43 #define IIC_M_WR        0       /* write operation */
   44 #define LED_ADDR        0xae    /* slave address */
   45 
   46 struct fled_softc {
   47         struct cdev     *sc_led;
   48 };
   49 
   50 static int
   51 fled_probe(device_t dev)
   52 {
   53         device_set_desc(dev, "Gateworks Cambria Front Panel LED");
   54         return 0;
   55 }
   56 
   57 static void
   58 fled_cb(void *arg, int onoff)
   59 {
   60         uint8_t data[1];
   61         struct iic_msg msgs[1] = {
   62              { LED_ADDR, IIC_M_WR, 1, data },
   63         };
   64         device_t dev = arg;
   65 
   66         data[0] = (onoff == 0);         /* NB: low true */
   67         (void) iicbus_transfer(dev, msgs, 1);
   68 }
   69 
   70 static int
   71 fled_attach(device_t dev)
   72 {
   73         struct fled_softc *sc = device_get_softc(dev);
   74 
   75         sc->sc_led = led_create(fled_cb, dev, "front");
   76 
   77         return 0;
   78 }
   79 
   80 static int
   81 fled_detach(device_t dev)
   82 {
   83         struct fled_softc *sc = device_get_softc(dev);
   84 
   85         if (sc->sc_led != NULL)
   86                 led_destroy(sc->sc_led);
   87 
   88         return 0;
   89 }
   90 
   91 static device_method_t fled_methods[] = {
   92         DEVMETHOD(device_probe,         fled_probe),
   93         DEVMETHOD(device_attach,        fled_attach),
   94         DEVMETHOD(device_detach,        fled_detach),
   95 
   96         {0, 0},
   97 };
   98 
   99 static driver_t fled_driver = {
  100         "fled",
  101         fled_methods,
  102         sizeof(struct fled_softc),
  103 };
  104 static devclass_t fled_devclass;
  105 
  106 DRIVER_MODULE(fled, iicbus, fled_driver, fled_devclass, 0, 0);
  107 MODULE_VERSION(fled, 1);
  108 MODULE_DEPEND(fled, iicbus, 1, 1, 1);

Cache object: 6f5788685b86f4800806d0d45fc85390


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