Em 10-08-2010 18:57, Davor Emard escreveu:
> HI
> 
> This is my second attempt on Avermedia A188.
> The hardware on this card is:
> 
> 1x Philips SAA7160 pci-e bridge
> 2x NXP SAA7136 multistandard 10-bit A/V decoder
> 2x Afatech AF9013S demodulator
> 2x NXP TDA18271 silicon tuner ic (digital/analog)
> 
> I've written af9013 frontend attach code but I'm having
> problems with loading firmware.
> 
> If someone can scan the card on window$ and see what the
> driver does, are there some gpios that turn on the frontend
> would be nice (maybe also extract correct firmware)
> 
> What I did
> -----------
> started from saa716x tree
> hg clone http://www.jusst.de/hg/saa716x/
> and added the af9013 frontend.
> 
> It compiles fine, loads af9013 module and requests
> firmware but it won't load
> 
> Firmware was downloaded from 
> http://www.otit.fi/~crope/v4l-dvb/af9015/dvb-fe-af9013.fw 
> Also tried another firmware for af9015 usb sticks
> 
> In the code I made a loop to try i2c addresses from 0x00-0x7f
> for af9013 but so far not found the correct one

Hi Emard,

I'm not sure why, but there are two drivers for saa716x chips, one out of the 
tree
(never submitted upstream), and the otherone that were submited and is already 
merged 
at the kernel tree.

The patch you've done is for the other driver. So, I can't apply it. If you want
to base it in the top of the driver found at the kernel tree, at
drivers/media/video/saa7164/, I can apply it. Otherwise, I will just discard
your patch. Sorry.

Cheers,
Mauro.

> 
> The patch avermedia-005.diff
> ---------
> diff -pur saa716x.orig/linux/drivers/media/common/saa716x/saa716x_hybrid.c 
> saa716x/linux/drivers/media/common/saa716x/saa716x_hybrid.c
> --- saa716x.orig/linux/drivers/media/common/saa716x/saa716x_hybrid.c  
> 2010-06-20 13:24:18.000000000 +0200
> +++ saa716x/linux/drivers/media/common/saa716x/saa716x_hybrid.c       
> 2010-08-10 23:34:42.901211071 +0200
> @@ -35,6 +35,9 @@
>  #include "zl10353.h"
>  #include "mb86a16.h"
>  #include "tda1004x.h"
> +#include "af9013.h"
> +#include "tda18271.h"
> +
>  
>  unsigned int verbose;
>  module_param(verbose, int, 0644);
> @@ -540,6 +543,82 @@ static struct saa716x_config saa716x_ave
>       .i2c_rate               = SAA716x_I2C_RATE_100,
>  };
>  
> +#define SAA716x_MODEL_AVERMEDIA_A188 "Avermedia AVerTV Duo Hybrid PCI-E II 
> A188"
> +#define SAA716x_DEV_AVERMEDIA_A188   "2x DVB-T + 2x Analaog"
> +
> +static int load_config_avera188(struct saa716x_dev *saa716x)
> +{
> +     int ret = 0;
> +     return ret;
> +}
> +
> +/* probably af9013 is used in parallel mode 
> +** common demod_address are 0x38 and 0x3a
> +** tuner is nxp tda18271
> +*/
> +struct af9013_config avera188_af9013_config = {
> +             .demod_address = 0x38,
> +             .output_mode = AF9013_OUTPUT_MODE_PARALLEL,
> +             .api_version = { 0, 1, 9, 0 },
> +             .gpio[0] = AF9013_GPIO_HI,
> +             .gpio[3] = AF9013_GPIO_TUNER_ON,
> +
> +/*
> +             .demod_address = 0x3a,
> +             .output_mode = AF9013_OUTPUT_MODE_SERIAL,
> +             .api_version = { 0, 1, 9, 0 },
> +             .gpio[0] = AF9013_GPIO_TUNER_ON,
> +             .gpio[1] = AF9013_GPIO_LO,
> +*/
> +};
> +
> +
> +static int saa716x_avera188_frontend_attach(struct saa716x_adapter *adapter, 
> int count)
> +{
> +     struct saa716x_dev *saa716x = adapter->saa716x;
> +     struct saa716x_i2c *i2c = &saa716x->i2c[count];
> +        int i;
> +        
> +     if (count  == 0) {
> +             dprintk(SAA716x_DEBUG, 1, "Adapter (%d) SAA716x frontend Init", 
> count);
> +             dprintk(SAA716x_DEBUG, 1, "Adapter (%d) Device ID=%02x", count, 
> saa716x->pdev->subsystem_device);
> +             dprintk(SAA716x_ERROR, 1, "Adapter (%d) Power ON", count);
> +             saa716x_gpio_write(saa716x, GPIO_14, 1);
> +             msleep(100);
> +
> +             for(i = 0; i < 1; i++)
> +             { /* try all addresses in a loop */
> +             /* avera188_af9013_config.demod_address = i; */
> +
> +                printk("Trying af9013 frontend on I2C address 0x%02x", 
> avera188_af9013_config.demod_address);
> +             adapter->fe = af9013_attach(&avera188_af9013_config, 
> &i2c->i2c_adapter);
> +             if (adapter->fe == NULL) {
> +                     dprintk(SAA716x_ERROR, 1, "Frontend attach failed");
> +                     /* return -ENODEV; */
> +             } else {
> +                     dprintk(SAA716x_ERROR, 1, "Done!");
> +                     return 0;
> +             }
> +             }
> +             return -ENODEV;
> +             
> +     }
> +
> +     return 0;
> +}
> +
> +static struct saa716x_config saa716x_avera188_config = {
> +     .model_name             = SAA716x_MODEL_AVERMEDIA_A188,
> +     .dev_type               = SAA716x_DEV_AVERMEDIA_A188,
> +     .boot_mode              = SAA716x_EXT_BOOT,
> +     .load_config            = &load_config_avera188,
> +     .adapters               = 1,
> +     .frontend_attach        = saa716x_avera188_frontend_attach,
> +     .irq_handler            = saa716x_hybrid_pci_irq,
> +     .i2c_rate               = SAA716x_I2C_RATE_100,
> +};
> +
> +
>  static struct pci_device_id saa716x_hybrid_pci_table[] = {
>  
>       MAKE_ENTRY(TWINHAN_TECHNOLOGIES, TWINHAN_VP_6090, SAA7162, 
> &saa716x_vp6090_config),
> @@ -547,6 +626,7 @@ static struct pci_device_id saa716x_hybr
>       MAKE_ENTRY(NXP_REFERENCE_BOARD, PCI_ANY_ID, SAA7160, 
> &saa716x_nemo_config),
>       MAKE_ENTRY(AVERMEDIA, AVERMEDIA_HC82, SAA7160, 
> &saa716x_averhc82_config),
>       MAKE_ENTRY(AVERMEDIA, AVERMEDIA_H788, SAA7160, 
> &saa716x_averh788_config),
> +     MAKE_ENTRY(AVERMEDIA, AVERMEDIA_A188, SAA7160, 
> &saa716x_avera188_config),
>       { }
>  };
>  MODULE_DEVICE_TABLE(pci, saa716x_hybrid_pci_table);
> Only in saa716x/linux/drivers/media/common/saa716x: saa716x_hybrid.c~
> diff -pur saa716x.orig/linux/drivers/media/common/saa716x/saa716x_hybrid.h 
> saa716x/linux/drivers/media/common/saa716x/saa716x_hybrid.h
> --- saa716x.orig/linux/drivers/media/common/saa716x/saa716x_hybrid.h  
> 2010-06-20 13:24:18.000000000 +0200
> +++ saa716x/linux/drivers/media/common/saa716x/saa716x_hybrid.h       
> 2010-08-10 21:02:40.587592396 +0200
> @@ -7,5 +7,6 @@
>  #define TWINHAN_VP_6090              0x0027
>  #define AVERMEDIA_HC82               0x2355
>  #define AVERMEDIA_H788               0x1455
> +#define AVERMEDIA_A188               0x1855
>  
>  #endif /* __SAA716x_HYBRID_H */
> Only in saa716x/linux/drivers/media/dvb/frontends: af9013.c~
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to