~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/lcd.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/lcd.h (Version linux-6.12-rc7) and /include/linux/lcd.h (Version linux-4.19.323)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*                                                  2 /*
  3  * LCD Lowlevel Control Abstraction                 3  * LCD Lowlevel Control Abstraction
  4  *                                                  4  *
  5  * Copyright (C) 2003,2004 Hewlett-Packard Com      5  * Copyright (C) 2003,2004 Hewlett-Packard Company
  6  *                                                  6  *
  7  */                                                 7  */
  8                                                     8 
  9 #ifndef _LINUX_LCD_H                                9 #ifndef _LINUX_LCD_H
 10 #define _LINUX_LCD_H                               10 #define _LINUX_LCD_H
 11                                                    11 
 12 #include <linux/device.h>                          12 #include <linux/device.h>
 13 #include <linux/mutex.h>                           13 #include <linux/mutex.h>
 14 #include <linux/notifier.h>                        14 #include <linux/notifier.h>
 15 #include <linux/fb.h>                              15 #include <linux/fb.h>
 16                                                    16 
 17 /* Notes on locking:                               17 /* Notes on locking:
 18  *                                                 18  *
 19  * lcd_device->ops_lock is an internal backlig     19  * lcd_device->ops_lock is an internal backlight lock protecting the ops
 20  * field and no code outside the core should n     20  * field and no code outside the core should need to touch it.
 21  *                                                 21  *
 22  * Access to set_power() is serialised by the      22  * Access to set_power() is serialised by the update_lock mutex since
 23  * most drivers seem to need this and historic     23  * most drivers seem to need this and historically get it wrong.
 24  *                                                 24  *
 25  * Most drivers don't need locking on their ge     25  * Most drivers don't need locking on their get_power() method.
 26  * If yours does, you need to implement it in      26  * If yours does, you need to implement it in the driver. You can use the
 27  * update_lock mutex if appropriate.               27  * update_lock mutex if appropriate.
 28  *                                                 28  *
 29  * Any other use of the locks below is probabl     29  * Any other use of the locks below is probably wrong.
 30  */                                                30  */
 31                                                    31 
 32 struct lcd_device;                                 32 struct lcd_device;
 33 struct fb_info;                                    33 struct fb_info;
 34                                                    34 
 35 struct lcd_properties {                            35 struct lcd_properties {
 36         /* The maximum value for contrast (rea     36         /* The maximum value for contrast (read-only) */
 37         int max_contrast;                          37         int max_contrast;
 38 };                                                 38 };
 39                                                    39 
 40 struct lcd_ops {                                   40 struct lcd_ops {
 41         /* Get the LCD panel power status (0:      41         /* Get the LCD panel power status (0: full on, 1..3: controller
 42            power on, flat panel power off, 4:      42            power on, flat panel power off, 4: full off), see FB_BLANK_XXX */
 43         int (*get_power)(struct lcd_device *);     43         int (*get_power)(struct lcd_device *);
                                                   >>  44         /*
                                                   >>  45          * Enable or disable power to the LCD(0: on; 4: off, see FB_BLANK_XXX)
                                                   >>  46          * and this callback would be called proir to fb driver's callback.
                                                   >>  47          *
                                                   >>  48          * P.S. note that if early_set_power is not NULL then early fb notifier
                                                   >>  49          *      would be registered.
                                                   >>  50          */
                                                   >>  51         int (*early_set_power)(struct lcd_device *, int power);
                                                   >>  52         /* revert the effects of the early blank event. */
                                                   >>  53         int (*r_early_set_power)(struct lcd_device *, int power);
 44         /* Enable or disable power to the LCD      54         /* Enable or disable power to the LCD (0: on; 4: off, see FB_BLANK_XXX) */
 45         int (*set_power)(struct lcd_device *,      55         int (*set_power)(struct lcd_device *, int power);
 46         /* Get the current contrast setting (0     56         /* Get the current contrast setting (0-max_contrast) */
 47         int (*get_contrast)(struct lcd_device      57         int (*get_contrast)(struct lcd_device *);
 48         /* Set LCD panel contrast */               58         /* Set LCD panel contrast */
 49         int (*set_contrast)(struct lcd_device      59         int (*set_contrast)(struct lcd_device *, int contrast);
 50         /* Set LCD panel mode (resolutions ...     60         /* Set LCD panel mode (resolutions ...) */
 51         int (*set_mode)(struct lcd_device *, s     61         int (*set_mode)(struct lcd_device *, struct fb_videomode *);
 52         /* Check if given framebuffer device i     62         /* Check if given framebuffer device is the one LCD is bound to;
 53            return 0 if not, !=0 if it is. If N     63            return 0 if not, !=0 if it is. If NULL, lcd always matches the fb. */
 54         int (*check_fb)(struct lcd_device *, s     64         int (*check_fb)(struct lcd_device *, struct fb_info *);
 55 };                                                 65 };
 56                                                    66 
 57 struct lcd_device {                                67 struct lcd_device {
 58         struct lcd_properties props;               68         struct lcd_properties props;
 59         /* This protects the 'ops' field. If '     69         /* This protects the 'ops' field. If 'ops' is NULL, the driver that
 60            registered this device has been unl     70            registered this device has been unloaded, and if class_get_devdata()
 61            points to something in the body of      71            points to something in the body of that driver, it is also invalid. */
 62         struct mutex ops_lock;                     72         struct mutex ops_lock;
 63         /* If this is NULL, the backing module     73         /* If this is NULL, the backing module is unloaded */
 64         const struct lcd_ops *ops;             !!  74         struct lcd_ops *ops;
 65         /* Serialise access to set_power metho     75         /* Serialise access to set_power method */
 66         struct mutex update_lock;                  76         struct mutex update_lock;
 67         /* The framebuffer notifier block */       77         /* The framebuffer notifier block */
 68         struct notifier_block fb_notif;            78         struct notifier_block fb_notif;
 69                                                    79 
 70         struct device dev;                         80         struct device dev;
 71 };                                                 81 };
 72                                                    82 
 73 struct lcd_platform_data {                         83 struct lcd_platform_data {
 74         /* reset lcd panel device. */              84         /* reset lcd panel device. */
 75         int (*reset)(struct lcd_device *ld);       85         int (*reset)(struct lcd_device *ld);
 76         /* on or off to lcd panel. if 'enable'     86         /* on or off to lcd panel. if 'enable' is 0 then
 77            lcd power off and 1, lcd power on.      87            lcd power off and 1, lcd power on. */
 78         int (*power_on)(struct lcd_device *ld,     88         int (*power_on)(struct lcd_device *ld, int enable);
 79                                                    89 
 80         /* it indicates whether lcd panel was      90         /* it indicates whether lcd panel was enabled
 81            from bootloader or not. */              91            from bootloader or not. */
 82         int lcd_enabled;                           92         int lcd_enabled;
 83         /* it means delay for stable time when     93         /* it means delay for stable time when it becomes low to high
 84            or high to low that is dependent on     94            or high to low that is dependent on whether reset gpio is
 85            low active or high active. */           95            low active or high active. */
 86         unsigned int reset_delay;                  96         unsigned int reset_delay;
 87         /* stable time needing to become lcd p     97         /* stable time needing to become lcd power on. */
 88         unsigned int power_on_delay;               98         unsigned int power_on_delay;
 89         /* stable time needing to become lcd p     99         /* stable time needing to become lcd power off. */
 90         unsigned int power_off_delay;             100         unsigned int power_off_delay;
 91                                                   101 
 92         /* it could be used for any purpose. *    102         /* it could be used for any purpose. */
 93         void *pdata;                              103         void *pdata;
 94 };                                                104 };
 95                                                   105 
 96 static inline void lcd_set_power(struct lcd_de    106 static inline void lcd_set_power(struct lcd_device *ld, int power)
 97 {                                                 107 {
 98         mutex_lock(&ld->update_lock);             108         mutex_lock(&ld->update_lock);
 99         if (ld->ops && ld->ops->set_power)        109         if (ld->ops && ld->ops->set_power)
100                 ld->ops->set_power(ld, power);    110                 ld->ops->set_power(ld, power);
101         mutex_unlock(&ld->update_lock);           111         mutex_unlock(&ld->update_lock);
102 }                                                 112 }
103                                                   113 
104 extern struct lcd_device *lcd_device_register(    114 extern struct lcd_device *lcd_device_register(const char *name,
105         struct device *parent, void *devdata,  !! 115         struct device *parent, void *devdata, struct lcd_ops *ops);
106 extern struct lcd_device *devm_lcd_device_regi    116 extern struct lcd_device *devm_lcd_device_register(struct device *dev,
107         const char *name, struct device *paren    117         const char *name, struct device *parent,
108         void *devdata, const struct lcd_ops *o !! 118         void *devdata, struct lcd_ops *ops);
109 extern void lcd_device_unregister(struct lcd_d    119 extern void lcd_device_unregister(struct lcd_device *ld);
110 extern void devm_lcd_device_unregister(struct     120 extern void devm_lcd_device_unregister(struct device *dev,
111         struct lcd_device *ld);                   121         struct lcd_device *ld);
112                                                   122 
113 #define to_lcd_device(obj) container_of(obj, s    123 #define to_lcd_device(obj) container_of(obj, struct lcd_device, dev)
114                                                   124 
115 static inline void * lcd_get_data(struct lcd_d    125 static inline void * lcd_get_data(struct lcd_device *ld_dev)
116 {                                                 126 {
117         return dev_get_drvdata(&ld_dev->dev);     127         return dev_get_drvdata(&ld_dev->dev);
118 }                                                 128 }
119                                                   129 
120                                                   130 
121 #endif                                            131 #endif
122                                                   132 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php