@@ -452,10 +452,34 @@
.tune_lane = 0,
.initial_emrs = 0x2,
},
- .gpio_init.initial_value = 0x6,
- .gpio_init.direction = 0x7,
- .gpio_audio_input = { .mask = 0x7,
- .tuner = 0x6, .linein = 0x2, .radio = 0x2 },
+
+ /*
+ * GPIOs
+ * 0 0x00000001 Audio/FM related???
+ * 1 0x00000002 XC3028 reset line, active low
+ * 2 0x00000004 Audio input multiplexer: 1 - Tuner, 0 - Line-in
+ */
+#define DVR3100_XC3028_RESET_GPIO (1 << 1)
+
+ /* FIXME - Try GPIO pins 8-15 first, then 3-7, then 16-31, then 0, */
+ /* then try them again using active high for the reset, until found */
+#define DVR3100_ZL10353_RESET_GPIO (1 << 8)
+
+ .gpio_init.direction = 0x5 |
+ DVR3100_XC3028_RESET_GPIO |
+ DVR3100_ZL10353_RESET_GPIO,
+ .gpio_init.initial_value = 0x4 |
+ DVR3100_XC3028_RESET_GPIO |
+ DVR3100_ZL10353_RESET_GPIO,
+ .gpio_audio_input = { .mask = 0x4,
+ .tuner = 0x4, .linein = 0x0, .radio = 0x0 },
+ .gpio_i2c_slave_reset = {
+ .active_hi_mask = 0x0,
+ .active_lo_mask = DVR3100_XC3028_RESET_GPIO |
+ DVR3100_ZL10353_RESET_GPIO,
+ .msecs_asserted = 50, /* ZL10353 requires 50 ms */
+ .msecs_recovery = 50, /* A guess */
+ },
.xceive_pin = 1,
.pci_list = cx18_pci_leadtek_dvr3100h,
.i2c = &cx18_i2c_std,