Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
s5k4ecgx.c File Reference
#include <linux/clk.h>
#include <linux/crc32.h>
#include <linux/ctype.h>
#include <linux/delay.h>
#include <linux/firmware.h>
#include <linux/gpio.h>
#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h>
#include <asm/unaligned.h>
#include <media/media-entity.h>
#include <media/s5k4ecgx.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-mediabus.h>
#include <media/v4l2-subdev.h>

Go to the source code of this file.

Data Structures

struct  s5k4ecgx_frmsize
 
struct  regval_list
 
struct  s5k4ecgx_pixfmt
 
struct  s5k4ecgx
 

Macros

#define S5K4ECGX_DRIVER_NAME   "s5k4ecgx"
 
#define S5K4ECGX_FIRMWARE   "s5k4ecgx.bin"
 
#define REG_FW_REVISION   0x700001a6
 
#define REG_FW_VERSION   0x700001a4
 
#define S5K4ECGX_REVISION_1_1   0x11
 
#define S5K4ECGX_FW_VERSION   0x4ec0
 
#define REG_USER_BRIGHTNESS   0x7000022c
 
#define REG_USER_CONTRAST   0x7000022e
 
#define REG_USER_SATURATION   0x70000230
 
#define REG_G_ENABLE_PREV   0x7000023e
 
#define REG_G_ENABLE_PREV_CHG   0x70000240
 
#define REG_G_NEW_CFG_SYNC   0x7000024a
 
#define REG_G_PREV_IN_WIDTH   0x70000250
 
#define REG_G_PREV_IN_HEIGHT   0x70000252
 
#define REG_G_PREV_IN_XOFFS   0x70000254
 
#define REG_G_PREV_IN_YOFFS   0x70000256
 
#define REG_G_CAP_IN_WIDTH   0x70000258
 
#define REG_G_CAP_IN_HEIGHT   0x7000025a
 
#define REG_G_CAP_IN_XOFFS   0x7000025c
 
#define REG_G_CAP_IN_YOFFS   0x7000025e
 
#define REG_G_INPUTS_CHANGE_REQ   0x70000262
 
#define REG_G_ACTIVE_PREV_CFG   0x70000266
 
#define REG_G_PREV_CFG_CHG   0x70000268
 
#define REG_G_PREV_OPEN_AFTER_CH   0x7000026a
 
#define PREG(n, x)   ((n) * 0x30 + (x))
 
#define REG_P_OUT_WIDTH(n)   PREG(n, 0x700002a6)
 
#define REG_P_OUT_HEIGHT(n)   PREG(n, 0x700002a8)
 
#define REG_P_FMT(n)   PREG(n, 0x700002aa)
 
#define REG_P_PVI_MASK(n)   PREG(n, 0x700002b4)
 
#define REG_P_FR_TIME_TYPE(n)   PREG(n, 0x700002be)
 
#define FR_TIME_DYNAMIC   0
 
#define FR_TIME_FIXED   1
 
#define FR_TIME_FIXED_ACCURATE   2
 
#define REG_P_FR_TIME_Q_TYPE(n)   PREG(n, 0x700002c0)
 
#define FR_TIME_Q_DYNAMIC   0
 
#define FR_TIME_Q_BEST_FRRATE   1
 
#define FR_TIME_Q_BEST_QUALITY   2
 
#define REG_P_MAX_FR_TIME(n)   PREG(n, 0x700002c2)
 
#define REG_P_MIN_FR_TIME(n)   PREG(n, 0x700002c4)
 
#define US_TO_FR_TIME(__t)   ((__t) / 100)
 
#define REG_P_PREV_MIRROR(n)   PREG(n, 0x700002d0)
 
#define REG_P_CAP_MIRROR(n)   PREG(n, 0x700002d2)
 
#define REG_G_PREVZOOM_IN_WIDTH   0x70000494
 
#define REG_G_PREVZOOM_IN_HEIGHT   0x70000496
 
#define REG_G_PREVZOOM_IN_XOFFS   0x70000498
 
#define REG_G_PREVZOOM_IN_YOFFS   0x7000049a
 
#define REG_G_CAPZOOM_IN_WIDTH   0x7000049c
 
#define REG_G_CAPZOOM_IN_HEIGHT   0x7000049e
 
#define REG_G_CAPZOOM_IN_XOFFS   0x700004a0
 
#define REG_G_CAPZOOM_IN_YOFFS   0x700004a2
 
#define REG_USER_SHARPNESS(n)   (0x70000a28 + (n) * 0xb6)
 
#define SHARPNESS_DIV   8208
 
#define TOK_TERM   0xffffffff
 
#define AHB_MSB_ADDR_PTR   0xfcfc
 
#define GEN_REG_OFFSH   0xd000
 
#define REG_CMDWR_ADDRH   0x0028
 
#define REG_CMDWR_ADDRL   0x002a
 
#define REG_CMDRD_ADDRH   0x002c
 
#define REG_CMDRD_ADDRL   0x002e
 
#define REG_CMDBUF0_ADDR   0x0f12
 
#define S5K4ECGX_NUM_PREV   ARRAY_SIZE(s5k4ecgx_prev_sizes)
 
#define S5K4ECGX_NUM_SUPPLIES   ARRAY_SIZE(s5k4ecgx_supply_names)
 
#define FW_CRC_SIZE   4
 
#define FW_RECORD_SIZE   6
 

Enumerations

enum  s5k4ecgx_gpio_id { STBY, RST, GPIO_NUM }
 

Functions

 module_param (debug, int, 0644)
 
 MODULE_DEVICE_TABLE (i2c, s5k4ecgx_id)
 
 module_i2c_driver (v4l2_i2c_driver)
 
 MODULE_DESCRIPTION ("Samsung S5K4ECGX 5MP SOC camera")
 
 MODULE_AUTHOR ("Sangwook Lee <[email protected]>")
 
 MODULE_AUTHOR ("Seok-Young Jang <[email protected]>")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_FIRMWARE (S5K4ECGX_FIRMWARE)
 

Macro Definition Documentation

#define AHB_MSB_ADDR_PTR   0xfcfc

Definition at line 112 of file s5k4ecgx.c.

#define FR_TIME_DYNAMIC   0

Definition at line 76 of file s5k4ecgx.c.

#define FR_TIME_FIXED   1

Definition at line 77 of file s5k4ecgx.c.

#define FR_TIME_FIXED_ACCURATE   2

Definition at line 78 of file s5k4ecgx.c.

#define FR_TIME_Q_BEST_FRRATE   1

Definition at line 81 of file s5k4ecgx.c.

#define FR_TIME_Q_BEST_QUALITY   2

Definition at line 82 of file s5k4ecgx.c.

#define FR_TIME_Q_DYNAMIC   0

Definition at line 80 of file s5k4ecgx.c.

#define FW_CRC_SIZE   4

Definition at line 318 of file s5k4ecgx.c.

#define FW_RECORD_SIZE   6

Definition at line 320 of file s5k4ecgx.c.

#define GEN_REG_OFFSH   0xd000

Definition at line 113 of file s5k4ecgx.c.

#define PREG (   n,
  x 
)    ((n) * 0x30 + (x))

Definition at line 70 of file s5k4ecgx.c.

#define REG_CMDBUF0_ADDR   0x0f12

Definition at line 118 of file s5k4ecgx.c.

#define REG_CMDRD_ADDRH   0x002c

Definition at line 116 of file s5k4ecgx.c.

#define REG_CMDRD_ADDRL   0x002e

Definition at line 117 of file s5k4ecgx.c.

#define REG_CMDWR_ADDRH   0x0028

Definition at line 114 of file s5k4ecgx.c.

#define REG_CMDWR_ADDRL   0x002a

Definition at line 115 of file s5k4ecgx.c.

#define REG_FW_REVISION   0x700001a6

Definition at line 43 of file s5k4ecgx.c.

#define REG_FW_VERSION   0x700001a4

Definition at line 44 of file s5k4ecgx.c.

#define REG_G_ACTIVE_PREV_CFG   0x70000266

Definition at line 65 of file s5k4ecgx.c.

#define REG_G_CAP_IN_HEIGHT   0x7000025a

Definition at line 61 of file s5k4ecgx.c.

#define REG_G_CAP_IN_WIDTH   0x70000258

Definition at line 60 of file s5k4ecgx.c.

#define REG_G_CAP_IN_XOFFS   0x7000025c

Definition at line 62 of file s5k4ecgx.c.

#define REG_G_CAP_IN_YOFFS   0x7000025e

Definition at line 63 of file s5k4ecgx.c.

#define REG_G_CAPZOOM_IN_HEIGHT   0x7000049e

Definition at line 96 of file s5k4ecgx.c.

#define REG_G_CAPZOOM_IN_WIDTH   0x7000049c

Definition at line 95 of file s5k4ecgx.c.

#define REG_G_CAPZOOM_IN_XOFFS   0x700004a0

Definition at line 97 of file s5k4ecgx.c.

#define REG_G_CAPZOOM_IN_YOFFS   0x700004a2

Definition at line 98 of file s5k4ecgx.c.

#define REG_G_ENABLE_PREV   0x7000023e

Definition at line 53 of file s5k4ecgx.c.

#define REG_G_ENABLE_PREV_CHG   0x70000240

Definition at line 54 of file s5k4ecgx.c.

#define REG_G_INPUTS_CHANGE_REQ   0x70000262

Definition at line 64 of file s5k4ecgx.c.

#define REG_G_NEW_CFG_SYNC   0x7000024a

Definition at line 55 of file s5k4ecgx.c.

#define REG_G_PREV_CFG_CHG   0x70000268

Definition at line 66 of file s5k4ecgx.c.

#define REG_G_PREV_IN_HEIGHT   0x70000252

Definition at line 57 of file s5k4ecgx.c.

#define REG_G_PREV_IN_WIDTH   0x70000250

Definition at line 56 of file s5k4ecgx.c.

#define REG_G_PREV_IN_XOFFS   0x70000254

Definition at line 58 of file s5k4ecgx.c.

#define REG_G_PREV_IN_YOFFS   0x70000256

Definition at line 59 of file s5k4ecgx.c.

#define REG_G_PREV_OPEN_AFTER_CH   0x7000026a

Definition at line 67 of file s5k4ecgx.c.

#define REG_G_PREVZOOM_IN_HEIGHT   0x70000496

Definition at line 92 of file s5k4ecgx.c.

#define REG_G_PREVZOOM_IN_WIDTH   0x70000494

Definition at line 91 of file s5k4ecgx.c.

#define REG_G_PREVZOOM_IN_XOFFS   0x70000498

Definition at line 93 of file s5k4ecgx.c.

#define REG_G_PREVZOOM_IN_YOFFS   0x7000049a

Definition at line 94 of file s5k4ecgx.c.

#define REG_P_CAP_MIRROR (   n)    PREG(n, 0x700002d2)

Definition at line 89 of file s5k4ecgx.c.

#define REG_P_FMT (   n)    PREG(n, 0x700002aa)

Definition at line 73 of file s5k4ecgx.c.

#define REG_P_FR_TIME_Q_TYPE (   n)    PREG(n, 0x700002c0)

Definition at line 79 of file s5k4ecgx.c.

#define REG_P_FR_TIME_TYPE (   n)    PREG(n, 0x700002be)

Definition at line 75 of file s5k4ecgx.c.

#define REG_P_MAX_FR_TIME (   n)    PREG(n, 0x700002c2)

Definition at line 85 of file s5k4ecgx.c.

#define REG_P_MIN_FR_TIME (   n)    PREG(n, 0x700002c4)

Definition at line 86 of file s5k4ecgx.c.

#define REG_P_OUT_HEIGHT (   n)    PREG(n, 0x700002a8)

Definition at line 72 of file s5k4ecgx.c.

#define REG_P_OUT_WIDTH (   n)    PREG(n, 0x700002a6)

Definition at line 71 of file s5k4ecgx.c.

#define REG_P_PREV_MIRROR (   n)    PREG(n, 0x700002d0)

Definition at line 88 of file s5k4ecgx.c.

#define REG_P_PVI_MASK (   n)    PREG(n, 0x700002b4)

Definition at line 74 of file s5k4ecgx.c.

#define REG_USER_BRIGHTNESS   0x7000022c

Definition at line 49 of file s5k4ecgx.c.

#define REG_USER_CONTRAST   0x7000022e

Definition at line 50 of file s5k4ecgx.c.

#define REG_USER_SATURATION   0x70000230

Definition at line 51 of file s5k4ecgx.c.

#define REG_USER_SHARPNESS (   n)    (0x70000a28 + (n) * 0xb6)

Definition at line 101 of file s5k4ecgx.c.

#define S5K4ECGX_DRIVER_NAME   "s5k4ecgx"

Definition at line 39 of file s5k4ecgx.c.

#define S5K4ECGX_FIRMWARE   "s5k4ecgx.bin"

Definition at line 40 of file s5k4ecgx.c.

#define S5K4ECGX_FW_VERSION   0x4ec0

Definition at line 46 of file s5k4ecgx.c.

#define S5K4ECGX_NUM_PREV   ARRAY_SIZE(s5k4ecgx_prev_sizes)

Definition at line 151 of file s5k4ecgx.c.

#define S5K4ECGX_NUM_SUPPLIES   ARRAY_SIZE(s5k4ecgx_supply_names)

Definition at line 176 of file s5k4ecgx.c.

#define S5K4ECGX_REVISION_1_1   0x11

Definition at line 45 of file s5k4ecgx.c.

#define SHARPNESS_DIV   8208

Definition at line 104 of file s5k4ecgx.c.

#define TOK_TERM   0xffffffff

Definition at line 105 of file s5k4ecgx.c.

#define US_TO_FR_TIME (   __t)    ((__t) / 100)

Definition at line 87 of file s5k4ecgx.c.

Enumeration Type Documentation

Enumerator:
STBY 
RST 
GPIO_NUM 

Definition at line 178 of file s5k4ecgx.c.

Function Documentation

MODULE_AUTHOR ( "Sangwook Lee <[email protected]>"  )
MODULE_AUTHOR ( "Seok-Young Jang <[email protected]>"  )
MODULE_DESCRIPTION ( "Samsung S5K4ECGX 5MP SOC camera"  )
MODULE_DEVICE_TABLE ( i2c  ,
s5k4ecgx_id   
)
MODULE_FIRMWARE ( S5K4ECGX_FIRMWARE  )
module_i2c_driver ( v4l2_i2c_driver  )
MODULE_LICENSE ( "GPL"  )
module_param ( debug  ,
int  ,
0644   
)