Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 155778
b: refs/heads/master
c: b80fd2d
h: refs/heads/master
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Jul 24, 2009
1 parent 803611a commit ee2a635
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 579d315218e8a3f696e375c5f6917da6488bec8a
refs/heads/master: b80fd2d811b48a92051f86d257b00f373e69a6d7
41 changes: 41 additions & 0 deletions trunk/drivers/media/video/em28xx/em28xx-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ struct em28xx_board em28xx_boards[] = {
.type = EM28XX_VMUX_COMPOSITE1,
.vmux = 0,
.amux = EM28XX_AMUX_VIDEO,
.gpio = silvercrest_reg_seq,
} },
},
[EM2800_BOARD_UNKNOWN] = {
Expand Down Expand Up @@ -1706,6 +1707,32 @@ static inline void em28xx_set_model(struct em28xx *dev)
EM28XX_I2C_FREQ_100_KHZ;
}

/* FIXME: Should be replaced by a proper mt9m001 driver */
static int em28xx_initialize_mt9m001(struct em28xx *dev)
{
int i;
unsigned char regs[][3] = {
{ 0x0d, 0x00, 0x01, },
{ 0x0d, 0x00, 0x00, },
{ 0x04, 0x05, 0x00, }, /* hres = 1280 */
{ 0x03, 0x04, 0x00, }, /* vres = 1024 */
{ 0x20, 0x11, 0x00, },
{ 0x06, 0x00, 0x10, },
{ 0x2b, 0x00, 0x24, },
{ 0x2e, 0x00, 0x24, },
{ 0x35, 0x00, 0x24, },
{ 0x2d, 0x00, 0x20, },
{ 0x2c, 0x00, 0x20, },
{ 0x09, 0x0a, 0xd4, },
{ 0x35, 0x00, 0x57, },
};

for (i = 0; i < ARRAY_SIZE(regs); i++)
i2c_master_send(&dev->i2c_client, &regs[i][0], 3);

return 0;
}

/* HINT method: webcam I2C chips
*
* This method work for webcams with Micron sensors
Expand Down Expand Up @@ -1740,6 +1767,19 @@ static int em28xx_hint_sensor(struct em28xx *dev)
dev->vinmode = 0x0d;
dev->vinctl = 0x00;

break;
case 0x8431:
dev->model = EM2750_BOARD_UNKNOWN;
sensor_name = "mt9m001";
dev->em28xx_sensor = EM28XX_MT9M001;
em28xx_initialize_mt9m001(dev);
dev->sensor_xres = 1280;
dev->sensor_yres = 1024;

/* probably means BGGR 16 bit bayer */
dev->vinmode = 0x0c;
dev->vinctl = 0x00;

break;
default:
printk("Unknown Micron Sensor 0x%04x\n", be16_to_cpu(version));
Expand Down Expand Up @@ -2275,6 +2315,7 @@ void em28xx_card_setup(struct em28xx *dev)
v4l2_subdev_call(sd, core, s_config, 0, &dev->sensor_xtal);
}


if (dev->board.adecoder == EM28XX_TVAUDIO)
v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap,
"tvaudio", "tvaudio", dev->board.tvaudio_addr);
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/video/em28xx/em28xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,7 @@ enum em28xx_decoder {
enum em28xx_sensor {
EM28XX_NOSENSOR = 0,
EM28XX_MT9V011,
EM28XX_MT9M001,
};

enum em28xx_adecoder {
Expand Down

0 comments on commit ee2a635

Please sign in to comment.