~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to include/media/adp1653.h

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * include/media/adp1653.h
 
3
 *
 
4
 * Copyright (C) 2008--2011 Nokia Corporation
 
5
 *
 
6
 * Contact: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
 
7
 *
 
8
 * Contributors:
 
9
 *      Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
 
10
 *      Tuukka Toivonen <tuukkat76@gmail.com>
 
11
 *
 
12
 * This program is free software; you can redistribute it and/or
 
13
 * modify it under the terms of the GNU General Public License
 
14
 * version 2 as published by the Free Software Foundation.
 
15
 *
 
16
 * This program is distributed in the hope that it will be useful, but
 
17
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
19
 * General Public License for more details.
 
20
 *
 
21
 * You should have received a copy of the GNU General Public License
 
22
 * along with this program; if not, write to the Free Software
 
23
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 
24
 * 02110-1301 USA
 
25
 *
 
26
 */
 
27
 
 
28
#ifndef ADP1653_H
 
29
#define ADP1653_H
 
30
 
 
31
#include <linux/i2c.h>
 
32
#include <linux/mutex.h>
 
33
#include <linux/videodev2.h>
 
34
#include <media/v4l2-ctrls.h>
 
35
#include <media/v4l2-subdev.h>
 
36
 
 
37
#define ADP1653_NAME                            "adp1653"
 
38
#define ADP1653_I2C_ADDR                        (0x60 >> 1)
 
39
 
 
40
/* Register definitions */
 
41
#define ADP1653_REG_OUT_SEL                     0x00
 
42
#define ADP1653_REG_OUT_SEL_HPLED_TORCH_MIN     0x01
 
43
#define ADP1653_REG_OUT_SEL_HPLED_TORCH_MAX     0x0b
 
44
#define ADP1653_REG_OUT_SEL_HPLED_FLASH_MIN     0x0c
 
45
#define ADP1653_REG_OUT_SEL_HPLED_FLASH_MAX     0x1f
 
46
#define ADP1653_REG_OUT_SEL_HPLED_SHIFT         3
 
47
#define ADP1653_REG_OUT_SEL_ILED_MAX            0x07
 
48
#define ADP1653_REG_OUT_SEL_ILED_SHIFT          0
 
49
 
 
50
#define ADP1653_REG_CONFIG                      0x01
 
51
#define ADP1653_REG_CONFIG_TMR_CFG              (1 << 4)
 
52
#define ADP1653_REG_CONFIG_TMR_SET_MAX          0x0f
 
53
#define ADP1653_REG_CONFIG_TMR_SET_SHIFT        0
 
54
 
 
55
#define ADP1653_REG_SW_STROBE                   0x02
 
56
#define ADP1653_REG_SW_STROBE_SW_STROBE         (1 << 0)
 
57
 
 
58
#define ADP1653_REG_FAULT                       0x03
 
59
#define ADP1653_REG_FAULT_FLT_SCP               (1 << 3)
 
60
#define ADP1653_REG_FAULT_FLT_OT                (1 << 2)
 
61
#define ADP1653_REG_FAULT_FLT_TMR               (1 << 1)
 
62
#define ADP1653_REG_FAULT_FLT_OV                (1 << 0)
 
63
 
 
64
#define ADP1653_INDICATOR_INTENSITY_MIN         0
 
65
#define ADP1653_INDICATOR_INTENSITY_STEP        2500
 
66
#define ADP1653_INDICATOR_INTENSITY_MAX         \
 
67
        (ADP1653_REG_OUT_SEL_ILED_MAX * ADP1653_INDICATOR_INTENSITY_STEP)
 
68
#define ADP1653_INDICATOR_INTENSITY_uA_TO_REG(a) \
 
69
        ((a) / ADP1653_INDICATOR_INTENSITY_STEP)
 
70
#define ADP1653_INDICATOR_INTENSITY_REG_TO_uA(a) \
 
71
        ((a) * ADP1653_INDICATOR_INTENSITY_STEP)
 
72
 
 
73
#define ADP1653_FLASH_INTENSITY_BASE            35
 
74
#define ADP1653_FLASH_INTENSITY_STEP            15
 
75
#define ADP1653_FLASH_INTENSITY_MIN                                     \
 
76
        (ADP1653_FLASH_INTENSITY_BASE                                   \
 
77
         + ADP1653_REG_OUT_SEL_HPLED_FLASH_MIN * ADP1653_FLASH_INTENSITY_STEP)
 
78
#define ADP1653_FLASH_INTENSITY_MAX                     \
 
79
        (ADP1653_FLASH_INTENSITY_MIN +                  \
 
80
         (ADP1653_REG_OUT_SEL_HPLED_FLASH_MAX -         \
 
81
          ADP1653_REG_OUT_SEL_HPLED_FLASH_MIN + 1) *    \
 
82
         ADP1653_FLASH_INTENSITY_STEP)
 
83
 
 
84
#define ADP1653_FLASH_INTENSITY_mA_TO_REG(a)                            \
 
85
        ((a) < ADP1653_FLASH_INTENSITY_BASE ? 0 :                       \
 
86
         (((a) - ADP1653_FLASH_INTENSITY_BASE) / ADP1653_FLASH_INTENSITY_STEP))
 
87
#define ADP1653_FLASH_INTENSITY_REG_TO_mA(a)            \
 
88
        ((a) * ADP1653_FLASH_INTENSITY_STEP + ADP1653_FLASH_INTENSITY_BASE)
 
89
 
 
90
#define ADP1653_TORCH_INTENSITY_MIN                                     \
 
91
        (ADP1653_FLASH_INTENSITY_BASE                                   \
 
92
         + ADP1653_REG_OUT_SEL_HPLED_TORCH_MIN * ADP1653_FLASH_INTENSITY_STEP)
 
93
#define ADP1653_TORCH_INTENSITY_MAX                     \
 
94
        (ADP1653_TORCH_INTENSITY_MIN +                  \
 
95
         (ADP1653_REG_OUT_SEL_HPLED_TORCH_MAX -         \
 
96
          ADP1653_REG_OUT_SEL_HPLED_TORCH_MIN + 1) *    \
 
97
         ADP1653_FLASH_INTENSITY_STEP)
 
98
 
 
99
struct adp1653_platform_data {
 
100
        int (*power)(struct v4l2_subdev *sd, int on);
 
101
 
 
102
        u32 max_flash_timeout;          /* flash light timeout in us */
 
103
        u32 max_flash_intensity;        /* led intensity, flash mode */
 
104
        u32 max_torch_intensity;        /* led intensity, torch mode */
 
105
        u32 max_indicator_intensity;    /* indicator led intensity */
 
106
};
 
107
 
 
108
#define to_adp1653_flash(sd)    container_of(sd, struct adp1653_flash, subdev)
 
109
 
 
110
struct adp1653_flash {
 
111
        struct v4l2_subdev subdev;
 
112
        struct adp1653_platform_data *platform_data;
 
113
 
 
114
        struct v4l2_ctrl_handler ctrls;
 
115
        struct v4l2_ctrl *led_mode;
 
116
        struct v4l2_ctrl *flash_timeout;
 
117
        struct v4l2_ctrl *flash_intensity;
 
118
        struct v4l2_ctrl *torch_intensity;
 
119
        struct v4l2_ctrl *indicator_intensity;
 
120
 
 
121
        struct mutex power_lock;
 
122
        int power_count;
 
123
        int fault;
 
124
};
 
125
 
 
126
#endif /* ADP1653_H */