diff options
author | Philippe Langlais <philippe.langlais@linaro.org> | 2011-06-16 17:09:54 +0200 |
---|---|---|
committer | said m bagheri <ebgheri@steludxu2848.(none)> | 2011-06-17 13:42:17 +0200 |
commit | 8c9c68f77509b92384ae6f41f60232d6af832aeb (patch) | |
tree | e6092278600eab9b63ab71ded4473efc05f6c197 /include | |
parent | c5890e7b63ef8a29496ac423c1f5e11e271eb309 (diff) |
ARM: ux500: flash: put driver code into staging
Signed-off-by: Rajat Verma <rajat.verma@stericsson.com>
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Conflicts:
arch/arm/configs/u8500_defconfig
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/camera_flash.h | 74 | ||||
-rw-r--r-- | include/linux/camera_flash_bitfields.h | 83 |
2 files changed, 157 insertions, 0 deletions
diff --git a/include/linux/camera_flash.h b/include/linux/camera_flash.h new file mode 100644 index 00000000000..15faf706dc9 --- /dev/null +++ b/include/linux/camera_flash.h @@ -0,0 +1,74 @@ +#ifndef __CAMERA_FLASH_H__ +#define __CAMERA_FLASH_H__ + +#define FLASH_NAME_SIZE (20) + +struct flash_mode_details { + unsigned long led_type; + unsigned long max_intensity_uAmp; + unsigned long min_intensity_uAmp; + unsigned long max_strobe_duration_uSecs; + unsigned long feature_bitmap; + unsigned char nbFaultRegisters; +}; + +/*feature_bitmap (in struct flash_mode_details) bit values*/ +#define INTENSITY_PROGRAMMABLE (0x01) +#define DURATION_PROGRAMMABLE (0x02) +#define TIMEOUT_PROGRAMMABLE (0x04) + +/*Status word returned by driver has status in lower 16 bits + *and Error in higher 16 bits. definition of status and error + *bits are there in flash_bitfields.h + */ +#define SET_FLASH_STATUS(_bitmap, _status) (_bitmap |= (_status & 0xffff)) +#define CLR_FLASH_STATUS(_bitmap, _status) (_bitmap &= ~(_status & 0xffff)) +#define SET_FLASH_ERROR(_bitmap, _status) (_bitmap |= (_status << 16)) +#define CLR_FLASH_ERROR(_bitmap, _status) (_bitmap &= ~(_status << 16)) +#define GET_FLASH_STATUS(_bitmap) (_bitmap & 0xffff) +#define GET_FLASH_ERROR(_bitmap) (_bitmap >> 16) + +struct flash_mode_params { + unsigned long duration_uSecs; + unsigned long intensity_uAmp; + unsigned long timeout_uSecs; +}; + +struct flash_ioctl_args_t { + unsigned long flash_mode; + unsigned long cam; + unsigned long status; + union mode_arg{ + struct flash_mode_details details; + struct flash_mode_params params; + unsigned long strobe_enable; + } mode_arg; +}; + +#define FLASH_MAGIC_NUMBER 0x17 +#define FLASH_GET_MODES _IOR(FLASH_MAGIC_NUMBER, 1,\ +struct flash_ioctl_args_t *) +#define FLASH_GET_MODE_DETAILS _IOWR(FLASH_MAGIC_NUMBER, 2,\ +struct flash_ioctl_args_t *) +#define FLASH_ENABLE_MODE _IOW(FLASH_MAGIC_NUMBER, 3,\ +struct flash_ioctl_args_t *) +#define FLASH_DISABLE_MODE _IOW(FLASH_MAGIC_NUMBER, 4,\ +struct flash_ioctl_args_t *) +#define FLASH_CONFIGURE_MODE _IOW(FLASH_MAGIC_NUMBER, 5,\ +struct flash_ioctl_args_t *) +#define FLASH_TRIGGER_STROBE _IOW(FLASH_MAGIC_NUMBER, 6,\ +struct flash_ioctl_args_t *) +#define FLASH_GET_STATUS _IOW(FLASH_MAGIC_NUMBER, 7,\ +struct flash_ioctl_args_t *) +#define FLASH_GET_LIFE_COUNTER _IOW(FLASH_MAGIC_NUMBER, 8,\ +struct flash_ioctl_args_t *) +#define FLASH_GET_SELF_TEST_MODES _IOR(FLASH_MAGIC_NUMBER, 9,\ +struct flash_ioctl_args_t *) +#define FLASH_SELF_TEST _IOW(FLASH_MAGIC_NUMBER, 10,\ +struct flash_ioctl_args_t *) +#define FLASH_GET_FAULT_REGISTERS _IOR(FLASH_MAGIC_NUMBER, 11,\ +struct flash_ioctl_args_t *) +#define FLASH_GET_SELF_TEST_RESULT _IOR(FLASH_MAGIC_NUMBER, 12,\ +struct flash_ioctl_args_t *) + +#endif diff --git a/include/linux/camera_flash_bitfields.h b/include/linux/camera_flash_bitfields.h new file mode 100644 index 00000000000..05da9c5ef58 --- /dev/null +++ b/include/linux/camera_flash_bitfields.h @@ -0,0 +1,83 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, as + * published by the Free Software Foundation. + */ +/** +* \file camera_flash_bitfields.h +* \brief Define some constants for the flash drivers API. +* \author ST-Ericsson +*/ +#ifndef __CAMERA_FLASH_BITFIELDS_H__ +#define __CAMERA_FLASH_BITFIELDS_H__ + +/* Flash Mode definitions */ +/* All Operating Modes are off (shutdown low power state)*/ +#define FLASH_MODE_NONE (0x000) +/* Enables the xenon driver. Strobe is managed by the flash driver itself. +Charges the xenon. Automatic periodic recharge is abstracted by the driver */ +#define FLASH_MODE_XENON (0x001) +/* Enables the xenon driver. Strobe is managed externally to the driver */ +#define FLASH_MODE_XENON_EXTERNAL_STROBE (0x002) +/* Enables the video led driver. Strobing is managed by the driver */ +#define FLASH_MODE_VIDEO_LED (0x004) +/* Enables the video led driver. Strobing is managed externally to driver */ +#define FLASH_MODE_VIDEO_LED_EXTERNAL_STROBE (0x008) +/* Enables the still LED driver. Strobing is managed by the driver itself */ +#define FLASH_MODE_STILL_LED (0x010) +/* Enables the still LED driver. Strobe is managed externally to the driver */ +#define FLASH_MODE_STILL_LED_EXTERNAL_STROBE (0x020) +/* Enables the AF assistant driver. Strobe is managed by the driver */ +#define FLASH_MODE_AF_ASSISTANT (0x040) +/* Enable the driver. Strobe is managed by the driver */ +#define FLASH_MODE_INDICATOR (0x080) +/* Enables the still HP LED driver. Strobing is managed by the driver itself */ +#define FLASH_MODE_STILL_HPLED (0x100) +/* Enables the still HP LED driver. Strobe is managed externally to the +driver */ +#define FLASH_MODE_STILL_HPLED_EXTERNAL_STROBE (0x200) + + +/* The flash is not usable anymore */ +#define FLASH_STATUS_BROKEN (0x00) +/* The flash is ready to be fired and unlit */ +#define FLASH_STATUS_READY (0x01) +/* The flash is discharged and by construction, charging; usually an +application shall not try to fire it in that state (although possible +typically in sport mode flash) */ +#define FLASH_STATUS_NOT_READY (0x02) +/* The flash is in shutdown state */ +#define FLASH_STATUS_SHUTDOWN (0x04) +/* Intermediate state that may exist where I2C registers can be programmed */ +#define FLASH_STATUS_STANDBY (0x08) +/* The flash is already strobing */ +#define FLASH_STATUS_LIT (0x10) + +#define FLASH_SELFTEST_NONE 0x000 +/* tests connections to flash driver ICs */ +#define FLASH_SELFTEST_CONNECTION 0x001 +/* tests capture flash without using strobe signal from camera */ +#define FLASH_SELFTEST_FLASH 0x002 +/* tests capture flash using strobe signal from camera: ONLY this one needs to +be done in idle state from flash tests cases */ +#define FLASH_SELFTEST_FLASH_WITH_STROBE 0x004 +/* tests video light */ +#define FLASH_SELFTEST_VIDEO_LIGHT 0x008 +/* tests AF assistance light */ +#define FLASH_SELFTEST_AF_LIGHT 0x010 +/* tests capture indicator light */ +#define FLASH_SELFTEST_INDICATOR 0x020 +/* tests flash in torch mode */ +#define FLASH_SELFTEST_TORCH_LIGHT 0x040 + +/** \brief Flash Error */ +enum TFlashError { + FLASH_ERR_NONE , /* None */ + FLASH_ERR_OVER_CHARGE , /* Error happened during the charge */ + FLASH_ERR_OVER_HEAT , /* Over temperature */ + FLASH_ERR_SHORT_CIRCUIT , /* Short circuit */ + FLASH_ERR_TIMEOUT , /* Timeout */ + FLASH_ERR_OVER_VOLTAGE /* Over voltage */ +} ; + +#endif |