diff options
author | Steven Toth <stoth@kernellabs.com> | 2012-01-04 08:52:26 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-01-04 17:48:09 -0500 |
commit | 182d29f307a1e99a05f05c155c8218b294d180ab (patch) | |
tree | c01d8012e80e20cf5834fb190b9a31d0db066c55 /drivers/media/video/cx23885 | |
parent | 4c3764d15050f91a76cede6f24402cd2701e73ef (diff) |
[media] cx23885: Cleanup MPEG encoder GPIO handling
During initialization the prior GPIO's were not being preserved
and restore correctly. Small cleanups to configure the GPIO's
for the HVR1700, HVR1800 and HVR1850.
Signed-off-by: Steven Toth <stoth@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx23885')
-rw-r--r-- | drivers/media/video/cx23885/cx23885-417.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/media/video/cx23885/cx23885-417.c b/drivers/media/video/cx23885/cx23885-417.c index 67c4a59bd88..c5ddcac96cb 100644 --- a/drivers/media/video/cx23885/cx23885-417.c +++ b/drivers/media/video/cx23885/cx23885-417.c | |||
@@ -900,6 +900,7 @@ static int cx23885_load_firmware(struct cx23885_dev *dev) | |||
900 | int i, retval = 0; | 900 | int i, retval = 0; |
901 | u32 value = 0; | 901 | u32 value = 0; |
902 | u32 gpio_output = 0; | 902 | u32 gpio_output = 0; |
903 | u32 gpio_value; | ||
903 | u32 checksum = 0; | 904 | u32 checksum = 0; |
904 | u32 *dataptr; | 905 | u32 *dataptr; |
905 | 906 | ||
@@ -907,7 +908,7 @@ static int cx23885_load_firmware(struct cx23885_dev *dev) | |||
907 | 908 | ||
908 | /* Save GPIO settings before reset of APU */ | 909 | /* Save GPIO settings before reset of APU */ |
909 | retval |= mc417_memory_read(dev, 0x9020, &gpio_output); | 910 | retval |= mc417_memory_read(dev, 0x9020, &gpio_output); |
910 | retval |= mc417_memory_read(dev, 0x900C, &value); | 911 | retval |= mc417_memory_read(dev, 0x900C, &gpio_value); |
911 | 912 | ||
912 | retval = mc417_register_write(dev, | 913 | retval = mc417_register_write(dev, |
913 | IVTV_REG_VPU, 0xFFFFFFED); | 914 | IVTV_REG_VPU, 0xFFFFFFED); |
@@ -991,11 +992,18 @@ static int cx23885_load_firmware(struct cx23885_dev *dev) | |||
991 | 992 | ||
992 | /* F/W power up disturbs the GPIOs, restore state */ | 993 | /* F/W power up disturbs the GPIOs, restore state */ |
993 | retval |= mc417_register_write(dev, 0x9020, gpio_output); | 994 | retval |= mc417_register_write(dev, 0x9020, gpio_output); |
994 | retval |= mc417_register_write(dev, 0x900C, value); | 995 | retval |= mc417_register_write(dev, 0x900C, gpio_value); |
995 | 996 | ||
996 | retval |= mc417_register_read(dev, IVTV_REG_VPU, &value); | 997 | retval |= mc417_register_read(dev, IVTV_REG_VPU, &value); |
997 | retval |= mc417_register_write(dev, IVTV_REG_VPU, value & 0xFFFFFFE8); | 998 | retval |= mc417_register_write(dev, IVTV_REG_VPU, value & 0xFFFFFFE8); |
998 | 999 | ||
1000 | /* Hardcoded GPIO's here */ | ||
1001 | retval |= mc417_register_write(dev, 0x9020, 0x4000); | ||
1002 | retval |= mc417_register_write(dev, 0x900C, 0x4000); | ||
1003 | |||
1004 | mc417_register_read(dev, 0x9020, &gpio_output); | ||
1005 | mc417_register_read(dev, 0x900C, &gpio_value); | ||
1006 | |||
999 | if (retval < 0) | 1007 | if (retval < 0) |
1000 | printk(KERN_ERR "%s: Error with mc417_register_write\n", | 1008 | printk(KERN_ERR "%s: Error with mc417_register_write\n", |
1001 | __func__); | 1009 | __func__); |