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/compat/linuxkpi/common/include/linux/backlight.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) 2020 The FreeBSD Foundation
    3  *
    4  * This software was developed by Emmanuel Vadot under sponsorship
    5  * from the FreeBSD Foundation.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  *
   28  * $FreeBSD$
   29  */
   30 
   31 #ifndef _LINUXKPI_LINUX_BACKLIGHT_H_
   32 #define _LINUXKPI_LINUX_BACKLIGHT_H_
   33 
   34 #include <linux/notifier.h>
   35 
   36 struct backlight_device;
   37 
   38 enum backlight_type {
   39         BACKLIGHT_RAW = 0,
   40 };
   41 
   42 struct backlight_properties {
   43         int type;
   44         int max_brightness;
   45         int brightness;
   46         int power;
   47 };
   48 
   49 enum backlight_notification {
   50         BACKLIGHT_REGISTERED,
   51         BACKLIGHT_UNREGISTERED,
   52 };
   53 
   54 enum backlight_update_reason {
   55         BACKLIGHT_UPDATE_HOTKEY = 0
   56 };
   57 
   58 struct backlight_ops {
   59         int options;
   60 #define BL_CORE_SUSPENDRESUME   1
   61         int (*update_status)(struct backlight_device *);
   62         int (*get_brightness)(struct backlight_device *);
   63 };
   64 
   65 struct backlight_device {
   66         const struct backlight_ops *ops;
   67         struct backlight_properties props;
   68         void *data;
   69         struct device *dev;
   70         char *name;
   71 };
   72 
   73 #define bl_get_data(bd) (bd)->data
   74 
   75 struct backlight_device *linux_backlight_device_register(const char *name,
   76     struct device *dev, void *data, const struct backlight_ops *ops, struct backlight_properties *props);
   77 void linux_backlight_device_unregister(struct backlight_device *bd);
   78 #define backlight_device_register(name, dev, data, ops, props)  \
   79         linux_backlight_device_register(name, dev, data, ops, props)
   80 #define backlight_device_unregister(bd) linux_backlight_device_unregister(bd)
   81 
   82 static inline int
   83 backlight_update_status(struct backlight_device *bd)
   84 {
   85         return (bd->ops->update_status(bd));
   86 }
   87 
   88 static inline void
   89 backlight_force_update(struct backlight_device *bd, int reason)
   90 {
   91         bd->props.brightness = bd->ops->get_brightness(bd);
   92 }
   93 
   94 static inline int
   95 backlight_device_set_brightness(struct backlight_device *bd, int brightness)
   96 {
   97 
   98         if (brightness > bd->props.max_brightness)
   99                 return (EINVAL);
  100         bd->props.brightness = brightness;
  101         return (bd->ops->update_status(bd));
  102 }
  103 
  104 static inline int
  105 backlight_enable(struct backlight_device *bd)
  106 {
  107         if (bd == NULL)
  108                 return (0);
  109         bd->props.power = 0/* FB_BLANK_UNBLANK */;
  110         return (backlight_update_status(bd));
  111 }
  112 
  113 static inline int
  114 backlight_disable(struct backlight_device *bd)
  115 {
  116         if (bd == NULL)
  117                 return (0);
  118         bd->props.power = 4/* FB_BLANK_POWERDOWN */;
  119         return (backlight_update_status(bd));
  120 }
  121 
  122 #endif  /* _LINUXKPI_LINUX_BACKLIGHT_H_ */

Cache object: d0c3fbad909ebcd05025d2d181e4ea3d


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