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

TOMOYO Linux Cross Reference
Linux/include/media/i2c/adp1653.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ 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.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * include/media/i2c/adp1653.h
  4  *
  5  * Copyright (C) 2008--2011 Nokia Corporation
  6  *
  7  * Contact: Sakari Ailus <sakari.ailus@iki.fi>
  8  *
  9  * Contributors:
 10  *      Sakari Ailus <sakari.ailus@iki.fi>
 11  *      Tuukka Toivonen <tuukkat76@gmail.com>
 12  */
 13 
 14 #ifndef ADP1653_H
 15 #define ADP1653_H
 16 
 17 #include <linux/i2c.h>
 18 #include <linux/mutex.h>
 19 #include <linux/videodev2.h>
 20 #include <media/v4l2-ctrls.h>
 21 #include <media/v4l2-subdev.h>
 22 
 23 #define ADP1653_NAME                            "adp1653"
 24 #define ADP1653_I2C_ADDR                        (0x60 >> 1)
 25 
 26 /* Register definitions */
 27 #define ADP1653_REG_OUT_SEL                     0x00
 28 #define ADP1653_REG_OUT_SEL_HPLED_TORCH_MIN     0x01
 29 #define ADP1653_REG_OUT_SEL_HPLED_TORCH_MAX     0x0b
 30 #define ADP1653_REG_OUT_SEL_HPLED_FLASH_MIN     0x0c
 31 #define ADP1653_REG_OUT_SEL_HPLED_FLASH_MAX     0x1f
 32 #define ADP1653_REG_OUT_SEL_HPLED_SHIFT         3
 33 #define ADP1653_REG_OUT_SEL_ILED_MAX            0x07
 34 #define ADP1653_REG_OUT_SEL_ILED_SHIFT          0
 35 
 36 #define ADP1653_REG_CONFIG                      0x01
 37 #define ADP1653_REG_CONFIG_TMR_CFG              (1 << 4)
 38 #define ADP1653_REG_CONFIG_TMR_SET_MAX          0x0f
 39 #define ADP1653_REG_CONFIG_TMR_SET_SHIFT        0
 40 
 41 #define ADP1653_REG_SW_STROBE                   0x02
 42 #define ADP1653_REG_SW_STROBE_SW_STROBE         (1 << 0)
 43 
 44 #define ADP1653_REG_FAULT                       0x03
 45 #define ADP1653_REG_FAULT_FLT_SCP               (1 << 3)
 46 #define ADP1653_REG_FAULT_FLT_OT                (1 << 2)
 47 #define ADP1653_REG_FAULT_FLT_TMR               (1 << 1)
 48 #define ADP1653_REG_FAULT_FLT_OV                (1 << 0)
 49 
 50 #define ADP1653_INDICATOR_INTENSITY_MIN         0
 51 #define ADP1653_INDICATOR_INTENSITY_STEP        2500
 52 #define ADP1653_INDICATOR_INTENSITY_MAX         \
 53         (ADP1653_REG_OUT_SEL_ILED_MAX * ADP1653_INDICATOR_INTENSITY_STEP)
 54 #define ADP1653_INDICATOR_INTENSITY_uA_TO_REG(a) \
 55         ((a) / ADP1653_INDICATOR_INTENSITY_STEP)
 56 #define ADP1653_INDICATOR_INTENSITY_REG_TO_uA(a) \
 57         ((a) * ADP1653_INDICATOR_INTENSITY_STEP)
 58 
 59 #define ADP1653_FLASH_INTENSITY_BASE            35
 60 #define ADP1653_FLASH_INTENSITY_STEP            15
 61 #define ADP1653_FLASH_INTENSITY_MIN                                     \
 62         (ADP1653_FLASH_INTENSITY_BASE                                   \
 63          + ADP1653_REG_OUT_SEL_HPLED_FLASH_MIN * ADP1653_FLASH_INTENSITY_STEP)
 64 #define ADP1653_FLASH_INTENSITY_MAX                     \
 65         (ADP1653_FLASH_INTENSITY_MIN +                  \
 66          (ADP1653_REG_OUT_SEL_HPLED_FLASH_MAX -         \
 67           ADP1653_REG_OUT_SEL_HPLED_FLASH_MIN + 1) *    \
 68          ADP1653_FLASH_INTENSITY_STEP)
 69 
 70 #define ADP1653_FLASH_INTENSITY_mA_TO_REG(a)                            \
 71         ((a) < ADP1653_FLASH_INTENSITY_BASE ? 0 :                       \
 72          (((a) - ADP1653_FLASH_INTENSITY_BASE) / ADP1653_FLASH_INTENSITY_STEP))
 73 #define ADP1653_FLASH_INTENSITY_REG_TO_mA(a)            \
 74         ((a) * ADP1653_FLASH_INTENSITY_STEP + ADP1653_FLASH_INTENSITY_BASE)
 75 
 76 #define ADP1653_TORCH_INTENSITY_MIN                                     \
 77         (ADP1653_FLASH_INTENSITY_BASE                                   \
 78          + ADP1653_REG_OUT_SEL_HPLED_TORCH_MIN * ADP1653_FLASH_INTENSITY_STEP)
 79 #define ADP1653_TORCH_INTENSITY_MAX                     \
 80         (ADP1653_TORCH_INTENSITY_MIN +                  \
 81          (ADP1653_REG_OUT_SEL_HPLED_TORCH_MAX -         \
 82           ADP1653_REG_OUT_SEL_HPLED_TORCH_MIN + 1) *    \
 83          ADP1653_FLASH_INTENSITY_STEP)
 84 
 85 struct adp1653_platform_data {
 86         int (*power)(struct v4l2_subdev *sd, int on);
 87 
 88         u32 max_flash_timeout;          /* flash light timeout in us */
 89         u32 max_flash_intensity;        /* led intensity, flash mode, mA */
 90         u32 max_torch_intensity;        /* led intensity, torch mode, mA */
 91         u32 max_indicator_intensity;    /* indicator led intensity, uA */
 92 
 93         struct gpio_desc *enable_gpio;  /* for device-tree based boot */
 94 };
 95 
 96 #define to_adp1653_flash(sd)    container_of(sd, struct adp1653_flash, subdev)
 97 
 98 struct adp1653_flash {
 99         struct v4l2_subdev subdev;
100         struct adp1653_platform_data *platform_data;
101 
102         struct v4l2_ctrl_handler ctrls;
103         struct v4l2_ctrl *led_mode;
104         struct v4l2_ctrl *flash_timeout;
105         struct v4l2_ctrl *flash_intensity;
106         struct v4l2_ctrl *torch_intensity;
107         struct v4l2_ctrl *indicator_intensity;
108 
109         struct mutex power_lock;
110         int power_count;
111         int fault;
112 };
113 
114 #endif /* ADP1653_H */
115 

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