|
@@ -75,10 +75,6 @@ struct saa7111 {
|
|
|
int norm;
|
|
|
int input;
|
|
|
int enable;
|
|
|
- int bright;
|
|
|
- int contrast;
|
|
|
- int hue;
|
|
|
- int sat;
|
|
|
};
|
|
|
|
|
|
#define I2C_SAA7111 0x48
|
|
@@ -96,6 +92,17 @@ saa7111_write (struct i2c_client *client,
|
|
|
return i2c_smbus_write_byte_data(client, reg, value);
|
|
|
}
|
|
|
|
|
|
+static inline void
|
|
|
+saa7111_write_if_changed(struct i2c_client *client, u8 reg, u8 value)
|
|
|
+{
|
|
|
+ struct saa7111 *decoder = i2c_get_clientdata(client);
|
|
|
+
|
|
|
+ if (decoder->reg[reg] != value) {
|
|
|
+ decoder->reg[reg] = value;
|
|
|
+ i2c_smbus_write_byte_data(client, reg, value);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static int
|
|
|
saa7111_write_block (struct i2c_client *client,
|
|
|
const u8 *data,
|
|
@@ -439,28 +446,14 @@ saa7111_command (struct i2c_client *client,
|
|
|
{
|
|
|
struct video_picture *pic = arg;
|
|
|
|
|
|
- if (decoder->bright != pic->brightness) {
|
|
|
- /* We want 0 to 255 we get 0-65535 */
|
|
|
- decoder->bright = pic->brightness;
|
|
|
- saa7111_write(client, 0x0a, decoder->bright >> 8);
|
|
|
- }
|
|
|
- if (decoder->contrast != pic->contrast) {
|
|
|
- /* We want 0 to 127 we get 0-65535 */
|
|
|
- decoder->contrast = pic->contrast;
|
|
|
- saa7111_write(client, 0x0b,
|
|
|
- decoder->contrast >> 9);
|
|
|
- }
|
|
|
- if (decoder->sat != pic->colour) {
|
|
|
- /* We want 0 to 127 we get 0-65535 */
|
|
|
- decoder->sat = pic->colour;
|
|
|
- saa7111_write(client, 0x0c, decoder->sat >> 9);
|
|
|
- }
|
|
|
- if (decoder->hue != pic->hue) {
|
|
|
- /* We want -128 to 127 we get 0-65535 */
|
|
|
- decoder->hue = pic->hue;
|
|
|
- saa7111_write(client, 0x0d,
|
|
|
- (decoder->hue - 32768) >> 8);
|
|
|
- }
|
|
|
+ /* We want 0 to 255 we get 0-65535 */
|
|
|
+ saa7111_write_if_changed(client, 0x0a, pic->brightness >> 8);
|
|
|
+ /* We want 0 to 127 we get 0-65535 */
|
|
|
+ saa7111_write(client, 0x0b, pic->contrast >> 9);
|
|
|
+ /* We want 0 to 127 we get 0-65535 */
|
|
|
+ saa7111_write(client, 0x0c, pic->colour >> 9);
|
|
|
+ /* We want -128 to 127 we get 0-65535 */
|
|
|
+ saa7111_write(client, 0x0d, (pic->hue - 32768) >> 8);
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -524,10 +517,6 @@ saa7111_detect_client (struct i2c_adapter *adapter,
|
|
|
decoder->norm = VIDEO_MODE_NTSC;
|
|
|
decoder->input = 0;
|
|
|
decoder->enable = 1;
|
|
|
- decoder->bright = 32768;
|
|
|
- decoder->contrast = 32768;
|
|
|
- decoder->hue = 32768;
|
|
|
- decoder->sat = 32768;
|
|
|
i2c_set_clientdata(client, decoder);
|
|
|
|
|
|
i = i2c_attach_client(client);
|