[linux-dvb] [PATCH] support for KWorld DVB-S 100

Johannes Stezenbach js at linuxtv.org
Mon Nov 21 14:00:35 CET 2005


On Mon, Nov 21, 2005, Vadim Catana wrote:
> These patches add support for KWorld DVB-S 100. The card is based
> on the same chips as Hauppauge Nova-S Plus (CX23883/CX24123/CX24109),
> but does not have the Intersil ISL6421, which is used for LNB control.
> On this card LNB voltage and tone are controled by LNBDC and LNBTone
> bits from register 0x29 of the CX24123 demodulator. The MO_GP0_IO
> register from CX23883 is used to turn LNB power on and off.

Nice, but can we avoid to add board specific code to the demod driver?

> +     case CX88_BOARD_KWORLD_DVBS_100:
> +
> +         val = cx24123_readreg(state, 0x29);
> +
> +         switch (voltage) {
> +         case SEC_VOLTAGE_13:
> +             dprintk("%s: setting voltage 13V\n", __FUNCTION__);
> +             if (state->config->enable_lnb_voltage) state->config->enable_lnb_voltage(fe, 1);

+		if (state->config->enable_lnb_voltage)
			state->config->enable_lnb_voltage(fe, 1);


> +             return cx24123_writereg(state, 0x29, val | 0x80);
> +         case SEC_VOLTAGE_18:
> +             dprintk("%s: setting voltage 18V\n", __FUNCTION__);
> +             if (state->config->enable_lnb_voltage) state->config->enable_lnb_voltage(fe, 1);
> +             return cx24123_writereg(state, 0x29, val & 0x7f);
> +         case SEC_VOLTAGE_OFF:
> +             dprintk("%s: setting voltage off\n", __FUNCTION__);
> +             if (state->config->enable_lnb_voltage) state->config->enable_lnb_voltage(fe, 0);
> +             return 0;
> +         default:
> +             return -EINVAL;
> +         };
> +     }

indent one tab, please

> +/* these are taken from v4l-kernel */
> +#define CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1  37
> +#define CX88_BOARD_HAUPPAUGE_NOVASE2_S1    38
> +#define CX88_BOARD_KWORLD_DVBS_100         39

won't these lead to conflicts? better get rid of this

> +
>  struct cx24123_config
>  {
>  	/* the demodulator's i2c address */
>  	u8 demod_address;
>  
> +	/* "KWorld DVB-S 100" or "Hauppauge Nova-S Plus" */
> +	int card_type;
> +

maybe better:
	int use_isl6421;	/* LNB / tone control via Intersil ISL6421 */

> +static void enable_lnb_voltage(struct dvb_frontend* fe, int on)
> +{
> +    struct cx8802_dev *dev= fe->dvb->priv;
> +    struct cx88_core *core = dev->core;
> +
> +    if ( on == 1 ) {
> +	cx_write(MO_GP0_IO, 0x000006f9);
> +    } else {
> +	cx_write(MO_GP0_IO, 0x000006fB);
> +    }
> +}
> +

indent one tab, please

>  static struct cx24123_config hauppauge_novas_config = {
> +	.card_type = CX88_BOARD_HAUPPAUGE_NOVASE2_S1,

	.use_isl6421 = 1,

>  	.demod_address = 0x55,
>  	.set_ts_params = cx24123_set_ts_param,
>  };
> +
> +static struct cx24123_config kworld_dvbs_100_config = {
> +	.card_type = CX88_BOARD_KWORLD_DVBS_100,

	.use_isl6421 = 0,

> +	.demod_address = 0x15,
> +	.set_ts_params = cx24123_set_ts_param,
> +	.enable_lnb_voltage = enable_lnb_voltage,
> +};
>  #endif
>  

Can you send an updated patch, please?

Thanks,
Johannes



More information about the linux-dvb mailing list