Em 03-06-2011 09:38, [email protected] escreveu:
> This patch adds support for selecting a card type in struct
> xc4000_config, to allow for implementing some card specific code
> in the driver.

Hi Istvan,

Please send your patches to [email protected]. The linux-dvb
ML is obsolete. I didn't remove it from the server just to avoid loosing
the mail history.

With respect to this specific patch, as Devin pointed, the proper way is to
set the configurable data via the boards entries, and not inside xc4000.

So, feel free to send us patches to cx88 and other bridge drivers whose
boards require different configs, in order to work with xc4000.

Thanks,
Mauro

> 
> Signed-off-by: Istvan Varga <[email protected]>
> 
> 
> xc4000_card_type.patch
> 
> 
> diff -uNr xc4000_orig/drivers/media/common/tuners/xc4000.c 
> xc4000/drivers/media/common/tuners/xc4000.c
> --- xc4000_orig/drivers/media/common/tuners/xc4000.c  2011-06-03 
> 11:54:19.000000000 +0200
> +++ xc4000/drivers/media/common/tuners/xc4000.c       2011-06-03 
> 14:32:59.000000000 +0200
> @@ -85,6 +85,7 @@
>       u32     bandwidth;
>       u8      video_standard;
>       u8      rf_mode;
> +     u8      card_type;
>       u8      ignore_i2c_write_errors;
>   /*  struct xc2028_ctrl      ctrl; */
>       struct firmware_properties cur_fw;
> @@ -1426,6 +1427,16 @@
>       int     instance;
>       u16     id = 0;
>  
> +     if (cfg->card_type != XC4000_CARD_GENERIC) {
> +             if (cfg->card_type == XC4000_CARD_WINFAST_CX88) {
> +                     cfg->i2c_address = 0x61;
> +                     cfg->if_khz = 4560;
> +             } else {                        /* default to PCTV 340E */
> +                     cfg->i2c_address = 0x61;
> +                     cfg->if_khz = 5400;
> +             }
> +     }
> +
>       dprintk(1, "%s(%d-%04x)\n", __func__,
>               i2c ? i2c_adapter_id(i2c) : -1,
>               cfg ? cfg->i2c_address : -1);
> @@ -1435,6 +1446,8 @@
>       instance = hybrid_tuner_request_state(struct xc4000_priv, priv,
>                                             hybrid_tuner_instance_list,
>                                             i2c, cfg->i2c_address, "xc4000");
> +     if (cfg->card_type != XC4000_CARD_GENERIC)
> +             priv->card_type = cfg->card_type;
>       switch (instance) {
>       case 0:
>               goto fail;
> @@ -1450,7 +1463,7 @@
>               break;
>       }
>  
> -     if (priv->if_khz == 0) {
> +     if (cfg->if_khz != 0) {
>               /* If the IF hasn't been set yet, use the value provided by
>                  the caller (occurs in hybrid devices where the analog
>                  call to xc4000_attach occurs before the digital side) */
> diff -uNr xc4000_orig/drivers/media/common/tuners/xc4000.h 
> xc4000/drivers/media/common/tuners/xc4000.h
> --- xc4000_orig/drivers/media/common/tuners/xc4000.h  2011-06-03 
> 11:54:19.000000000 +0200
> +++ xc4000/drivers/media/common/tuners/xc4000.h       2011-06-03 
> 14:29:32.000000000 +0200
> @@ -27,8 +27,13 @@
>  struct dvb_frontend;
>  struct i2c_adapter;
>  
> +#define XC4000_CARD_GENERIC          0
> +#define XC4000_CARD_PCTV_340E                1
> +#define XC4000_CARD_WINFAST_CX88     2
> +
>  struct xc4000_config {
> -     u8      i2c_address;
> +     u8      card_type;      /* if card type is not generic, all other */
> +     u8      i2c_address;    /* parameters are automatically set */
>       u32     if_khz;
>  };
>  

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

Reply via email to