aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/camera_flash/adp1653.h
diff options
context:
space:
mode:
authorMathieu J. Poirier <mathieu.poirier@linaro.org>2011-09-29 15:10:39 -0600
committerMathieu J. Poirier <mathieu.poirier@linaro.org>2011-09-29 15:10:39 -0600
commit7118ded1c4dbdee31da6876b1839a1b647bc41df (patch)
treecf926790ce9fe3bb3b35baef5a9b7289e519cade /drivers/staging/camera_flash/adp1653.h
parent0023ca51966eb6e302f3cb945dbff9e794be615f (diff)
parent2036fd76350799bb2b53b309d0ac6d60692fe890 (diff)
downloadsnowball-7118ded1c4dbdee31da6876b1839a1b647bc41df.tar.gz
Merge branch 'linaro.linux-3.0-android-ux500.master' into linux-linaro-3.0-2011.09-0-android-1
Signed-off-by: Mathieu J. Poirier <mathieu.poirier@linaro.org> Conflicts: arch/arm/common/Makefile arch/arm/configs/android_omap3_defconfig arch/arm/configs/android_omap4_defconfig arch/arm/kernel/entry-armv.S drivers/gpu/ion/ion.c drivers/misc/Kconfig drivers/misc/Makefile drivers/mmc/card/block.c drivers/mmc/core/core.c drivers/mmc/host/mmci.c drivers/net/wireless/bcmdhd/Makefile drivers/net/wireless/bcmdhd/bcmevent.c drivers/net/wireless/bcmdhd/bcmsdh_linux.c drivers/net/wireless/bcmdhd/dhd.h drivers/net/wireless/bcmdhd/dhd_bus.h drivers/net/wireless/bcmdhd/dhd_cdc.c drivers/net/wireless/bcmdhd/dhd_common.c drivers/net/wireless/bcmdhd/dhd_linux.c drivers/net/wireless/bcmdhd/dhd_linux_mon.c drivers/net/wireless/bcmdhd/dhd_sdio.c drivers/net/wireless/bcmdhd/include/bcmutils.h drivers/net/wireless/bcmdhd/include/epivers.h drivers/net/wireless/bcmdhd/include/linuxver.h drivers/net/wireless/bcmdhd/include/proto/bcmevent.h drivers/net/wireless/bcmdhd/include/sdio.h drivers/net/wireless/bcmdhd/include/wlioctl.h drivers/net/wireless/bcmdhd/wl_android.c drivers/net/wireless/bcmdhd/wl_android.h drivers/net/wireless/bcmdhd/wl_cfg80211.c drivers/net/wireless/bcmdhd/wl_cfg80211.h drivers/net/wireless/bcmdhd/wl_cfgp2p.c drivers/net/wireless/bcmdhd/wl_cfgp2p.h drivers/net/wireless/bcmdhd/wl_iw.c drivers/net/wireless/bcmdhd/wldev_common.c drivers/staging/android/Kconfig drivers/staging/android/Makefile drivers/staging/android/binder.c drivers/staging/android/logger.c drivers/usb/gadget/android.c drivers/usb/otg/otg_id.c include/linux/android_aid.h include/linux/earlysuspend.h include/linux/ion.h include/linux/usb/otg_id.h include/linux/wakelock.h kernel/irq/pm.c kernel/power/consoleearlysuspend.c kernel/power/wakelock.c net/bluetooth/l2cap_core.c net/bluetooth/l2cap_sock.c net/netfilter/Kconfig net/netfilter/xt_qtaguid.c net/netfilter/xt_quota2.c
Diffstat (limited to 'drivers/staging/camera_flash/adp1653.h')
-rwxr-xr-xdrivers/staging/camera_flash/adp1653.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/drivers/staging/camera_flash/adp1653.h b/drivers/staging/camera_flash/adp1653.h
new file mode 100755
index 00000000000..3035ab56d99
--- /dev/null
+++ b/drivers/staging/camera_flash/adp1653.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) ST-Ericsson SA 2010
+ * License terms: GNU General Public License (GPL), version 2.
+ */
+#ifndef __ADP1653_H__
+#define __ADP1653_H__
+
+#include <linux/types.h>
+#define ADP1653_ID (0) /*chip does not give any id :) so be it zero!*/
+
+#define OUTPUT_SEL_REG (0x00)
+#define CONFIG_TIMER_REG (0x01)
+#define SW_STROBE_REG (0x02)
+#define FAULT_STATUS_REG (0x03)
+
+/* Fault codes, FALUT_STATUS_REG bits */
+#define OVER_VOLTAGE_FAULT (0x01)
+#define TIMEOUT_FAULT (0x02)
+#define OVER_TEMPERATURE_FAULT (0x04)
+#define SHORT_CIRCUIT_FAULT (0x08)
+
+/*CONFIG_TIMER_REG bits*/
+#define TIMER_ENABLE (0x10)
+
+struct adp1653_priv_data{
+ struct i2c_client *i2c_client;
+ unsigned long curr_mode;
+ unsigned long enable_gpio;
+ unsigned long strobe_gpio;
+ unsigned long irq_no;
+ unsigned long status;
+ uint8_t fault;
+ uint8_t flash_intensity;
+ uint8_t flash_duration;
+ uint8_t torch_intensity;
+ uint8_t indicator_intensity;
+};
+
+/*Intensity current limits in Micro Amps*/
+/* over 250mA flash current is reduced */
+/* do not know why, neither really care about */
+//#define FLASH_MAX_INTENSITY (500000) /*code - 31*/
+#define FLASH_MAX_INTENSITY (250000)
+#define FLASH_MIN_INTENSITY (215000) /*code - 12*/
+#define TORCH_MAX_INTENSITY (200000) /*code - 11*/
+#define TORCH_MIN_INTENSITY (50000) /*code - 1*/
+#define ILED_MAX_INTENSITY (17500) /*Code - 7*/
+#define ILED_MIN_INTENSITY (2500) /*code - 1*/
+
+#define FLASH_MAX_STROBE_DURATION (820000) /*820 uSec*/
+
+#define DURATION_USEC_TO_CODE(_code,_duration) do{ \
+ if(_duration > FLASH_MAX_STROBE_DURATION) \
+ _duration = FLASH_MAX_STROBE_DURATION; \
+ _code = (FLASH_MAX_STROBE_DURATION - _duration) / 54600;\
+}while(0);
+
+#define HPLED_UAMP_TO_CODE(_current) ((_current - 35000) / 15000)
+
+#define FLASH_UAMP_TO_CODE(_code,_current){ \
+ if(_current > FLASH_MAX_INTENSITY) \
+ _current = FLASH_MAX_INTENSITY; \
+ if(_current < FLASH_MIN_INTENSITY) \
+ _current = FLASH_MIN_INTENSITY; \
+ _code = HPLED_UAMP_TO_CODE(_current); \
+}while(0)
+
+#define TORCH_UAMP_TO_CODE(_code,_current){ \
+ if(_current > TORCH_MAX_INTENSITY) \
+ _current = TORCH_MAX_INTENSITY; \
+ if(_current < TORCH_MIN_INTENSITY) \
+ _current = TORCH_MIN_INTENSITY; \
+ _code = HPLED_UAMP_TO_CODE(_current); \
+}while(0)
+
+#define ILED_UAMP_TO_CODE(_code,_current) do { \
+ if(_current > ILED_MAX_INTENSITY) \
+ _current = ILED_MAX_INTENSITY; \
+ _code = _current / ILED_MIN_INTENSITY; /* Min current: 2.5mA/2500uA*/ \
+}while(0)
+
+#endif