.. | .. |
---|
51 | 51 | #define SC5336_REG_EXPOSURE_H 0x3e00 |
---|
52 | 52 | #define SC5336_REG_EXPOSURE_M 0x3e01 |
---|
53 | 53 | #define SC5336_REG_EXPOSURE_L 0x3e02 |
---|
54 | | -#define SC5336_EXPOSURE_MIN 1 |
---|
| 54 | +#define SC5336_EXPOSURE_MIN 2 |
---|
55 | 55 | #define SC5336_EXPOSURE_STEP 1 |
---|
56 | 56 | #define SC5336_VTS_MAX 0x7fff |
---|
57 | 57 | |
---|
.. | .. |
---|
244 | 244 | {0x3633, 0x33}, |
---|
245 | 245 | {0x3638, 0xcf}, |
---|
246 | 246 | {0x363f, 0xc0}, |
---|
247 | | - {0x3641, 0x20}, |
---|
| 247 | + {0x3641, 0x38}, |
---|
248 | 248 | {0x3670, 0x56}, |
---|
249 | 249 | {0x3674, 0xc0}, |
---|
250 | 250 | {0x3675, 0xa0}, |
---|
.. | .. |
---|
287 | 287 | {0x37fb, 0x24}, |
---|
288 | 288 | {0x37fc, 0x01}, |
---|
289 | 289 | {0x37fd, 0x36}, |
---|
| 290 | + {0x3900, 0x0d}, |
---|
290 | 291 | {0x3901, 0x00}, |
---|
291 | 292 | {0x3904, 0x04}, |
---|
292 | 293 | {0x3905, 0x8c}, |
---|
.. | .. |
---|
866 | 867 | static int __sc5336_start_stream(struct sc5336 *sc5336) |
---|
867 | 868 | { |
---|
868 | 869 | int ret; |
---|
| 870 | + u32 chip_version = 0; |
---|
869 | 871 | |
---|
870 | 872 | if (!sc5336->is_thunderboot) { |
---|
871 | 873 | ret = sc5336_write_array(sc5336->client, sc5336->cur_mode->reg_list); |
---|
.. | .. |
---|
877 | 879 | if (ret) |
---|
878 | 880 | return ret; |
---|
879 | 881 | } |
---|
| 882 | + ret = sc5336_read_reg(sc5336->client, 0x3040, SC5336_REG_VALUE_08BIT, &chip_version); |
---|
| 883 | + if (chip_version == 0x00) { |
---|
| 884 | + ret |= sc5336_write_reg(sc5336->client, 0x3258, SC5336_REG_VALUE_08BIT, 0x0c); |
---|
| 885 | + ret |= sc5336_write_reg(sc5336->client, 0x3249, SC5336_REG_VALUE_08BIT, 0x0b); |
---|
| 886 | + ret |= sc5336_write_reg(sc5336->client, 0x3934, SC5336_REG_VALUE_08BIT, 0x0a); |
---|
| 887 | + ret |= sc5336_write_reg(sc5336->client, 0x3935, SC5336_REG_VALUE_08BIT, 0x00); |
---|
| 888 | + ret |= sc5336_write_reg(sc5336->client, 0x3937, SC5336_REG_VALUE_08BIT, 0x75); |
---|
| 889 | + } else if (chip_version == 0x03) { |
---|
| 890 | + ret |= sc5336_write_reg(sc5336->client, 0x3258, SC5336_REG_VALUE_08BIT, 0x08); |
---|
| 891 | + ret |= sc5336_write_reg(sc5336->client, 0x3249, SC5336_REG_VALUE_08BIT, 0x07); |
---|
| 892 | + ret |= sc5336_write_reg(sc5336->client, 0x3934, SC5336_REG_VALUE_08BIT, 0x05); |
---|
| 893 | + ret |= sc5336_write_reg(sc5336->client, 0x3935, SC5336_REG_VALUE_08BIT, 0x07); |
---|
| 894 | + ret |= sc5336_write_reg(sc5336->client, 0x3937, SC5336_REG_VALUE_08BIT, 0x74); |
---|
| 895 | + } |
---|
| 896 | + if (ret) |
---|
| 897 | + return ret; |
---|
880 | 898 | |
---|
881 | 899 | return sc5336_write_reg(sc5336->client, SC5336_REG_CTRL_MODE, |
---|
882 | 900 | SC5336_REG_VALUE_08BIT, SC5336_MODE_STREAMING); |
---|