Re: FW: [PATCH] drivers: support new Siano tuner devices.

From: Jesper Juhl
Date: Tue Jul 19 2011 - 07:35:22 EST



Adding linux-media@xxxxxxxxxxxxxxx to CC


On Tue, 19 Jul 2011, Doron Cohen wrote:

>
> Hi,
> This is the first time I ever post changes to linux kernel, so excuse me
> if I have errors in the process.
> As Siano team member, I would like to update the drivers for Siano
> devices with the latest and greatest fixes. Unfortunately there is a hug
> gap between the current code in the kernel and the code Siano has which
> is more advanced and supports newer devices. I will try to break down
> the changes into small pieces so each of the changes will be clear and
> isolated.
> Here is the first change which is my "test balloon" and includes simple
> changes which includes support in new devices pulished after the kernel
> source maintenance has stopped.
>
> diff --git a/drivers/media/dvb/siano/sms-cards.c
> b/drivers/media/dvb/siano/sms-cards.c
> index af121db..302a9e3 100644
> --- a/drivers/media/dvb/siano/sms-cards.c
> +++ b/drivers/media/dvb/siano/sms-cards.c
> @@ -26,45 +26,66 @@ MODULE_PARM_DESC(cards_dbg, "set debug level
> (info=1, adv=2 (or-able))");
>
> static struct sms_board sms_boards[] = {
> [SMS_BOARD_UNKNOWN] = {
> - .name = "Unknown board",
> + /* 0 */
> + .name = "Unknown board",
> + .type = SMS_UNKNOWN_TYPE,
> + .default_mode = DEVICE_MODE_NONE,
> },
> [SMS1XXX_BOARD_SIANO_STELLAR] = {
> - .name = "Siano Stellar Digital Receiver",
> - .type = SMS_STELLAR,
> + /* 1 */
> + .name =
> + "Siano Stellar Digital Receiver",
> + .type = SMS_STELLAR,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_SIANO_NOVA_A] = {
> - .name = "Siano Nova A Digital Receiver",
> - .type = SMS_NOVA_A0,
> + /* 2 */
> + .name = "Siano Nova A Digital Receiver",
> + .type = SMS_NOVA_A0,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_SIANO_NOVA_B] = {
> - .name = "Siano Nova B Digital Receiver",
> - .type = SMS_NOVA_B0,
> + /* 3 */
> + .name = "Siano Nova B Digital Receiver",
> + .type = SMS_NOVA_B0,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_SIANO_VEGA] = {
> - .name = "Siano Vega Digital Receiver",
> - .type = SMS_VEGA,
> + /* 4 */
> + .name = "Siano Vega Digital Receiver",
> + .type = SMS_VEGA,
> + .default_mode = DEVICE_MODE_CMMB,
> },
> [SMS1XXX_BOARD_HAUPPAUGE_CATAMOUNT] = {
> - .name = "Hauppauge Catamount",
> - .type = SMS_STELLAR,
> - .fw[DEVICE_MODE_DVBT_BDA] =
> "sms1xxx-stellar-dvbt-01.fw",
> + /* 5 */
> + .name = "Hauppauge Catamount",
> + .type = SMS_STELLAR,
> + .fw[DEVICE_MODE_DVBT_BDA] =
> + "sms1xxx-stellar-dvbt-01.fw",
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_HAUPPAUGE_OKEMO_A] = {
> - .name = "Hauppauge Okemo-A",
> - .type = SMS_NOVA_A0,
> - .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-a-dvbt-01.fw",
> + /* 6 */
> + .name = "Hauppauge Okemo-A",
> + .type = SMS_NOVA_A0,
> + .fw[DEVICE_MODE_DVBT_BDA] =
> + "sms1xxx-nova-a-dvbt-01.fw",
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_HAUPPAUGE_OKEMO_B] = {
> - .name = "Hauppauge Okemo-B",
> - .type = SMS_NOVA_B0,
> - .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-nova-b-dvbt-01.fw",
> + /* 7 */
> + .name = "Hauppauge Okemo-B",
> + .type = SMS_NOVA_B0,
> + .fw[DEVICE_MODE_DVBT_BDA] =
> + "sms1xxx-nova-b-dvbt-01.fw",
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_HAUPPAUGE_WINDHAM] = {
> - .name = "Hauppauge WinTV MiniStick",
> - .type = SMS_NOVA_B0,
> - .fw[DEVICE_MODE_ISDBT_BDA] =
> "sms1xxx-hcw-55xxx-isdbt-02.fw",
> + /* 8 */
> + .name = "Hauppauge WinTV MiniStick",
> + .type = SMS_NOVA_B0,
> .fw[DEVICE_MODE_DVBT_BDA] =
> "sms1xxx-hcw-55xxx-dvbt-02.fw",
> - .rc_codes = RC_MAP_HAUPPAUGE,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> .board_cfg.leds_power = 26,
> .board_cfg.led0 = 27,
> .board_cfg.led1 = 28,
> @@ -74,30 +95,92 @@ static struct sms_board sms_boards[] = {
> .led_hi = 28,
> },
> [SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD] = {
> + /* 9 */
> .name = "Hauppauge WinTV MiniCard",
> .type = SMS_NOVA_B0,
> .fw[DEVICE_MODE_DVBT_BDA] =
> "sms1xxx-hcw-55xxx-dvbt-02.fw",
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> .lna_ctrl = 29,
> .board_cfg.foreign_lna0_ctrl = 29,
> .rf_switch = 17,
> .board_cfg.rf_switch_uhf = 17,
> },
> [SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2] = {
> - .name = "Hauppauge WinTV MiniCard",
> - .type = SMS_NOVA_B0,
> + /* 10 */
> + .name = "Hauppauge WinTV MiniCard",
> + .type = SMS_NOVA_B0,
> .fw[DEVICE_MODE_DVBT_BDA] =
> "sms1xxx-hcw-55xxx-dvbt-02.fw",
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> + .board_cfg.foreign_lna0_ctrl = 1,
> .lna_ctrl = -1,
> },
> [SMS1XXX_BOARD_SIANO_NICE] = {
> /* 11 */
> .name = "Siano Nice Digital Receiver",
> .type = SMS_NOVA_B0,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> },
> [SMS1XXX_BOARD_SIANO_VENICE] = {
> /* 12 */
> .name = "Siano Venice Digital Receiver",
> - .type = SMS_VEGA,
> + .type = SMS_VENICE,
> + .default_mode = DEVICE_MODE_CMMB,
> },
> + [SMS1XXX_BOARD_SIANO_STELLAR_ROM] = {
> + /* 13 */
> + .name =
> + "Siano Stellar Digital Receiver ROM",
> + .type = SMS_STELLAR,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> + .intf_num = 1,
> + },
> + [SMS1XXX_BOARD_ZTE_DVB_DATA_CARD] = {
> + /* 14 */
> + .name = "ZTE Data Card Digital Receiver",
> + .type = SMS_NOVA_B0,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> + .intf_num = 5,
> + .mtu = 15792,
> + },
> + [SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD] = {
> + /* 15 */
> + .name = "ONDA Data Card Digital Receiver",
> + .type = SMS_NOVA_B0,
> + .default_mode = DEVICE_MODE_DVBT_BDA,
> + .intf_num = 6,
> + .mtu = 15792,
> + },
> + [SMS1XXX_BOARD_SIANO_MING] = {
> + /* 16 */
> + .name = "Siano Ming Digital Receiver",
> + .type = SMS_MING,
> + .default_mode = DEVICE_MODE_CMMB,
> + },
> + [SMS1XXX_BOARD_SIANO_PELE] = {
> + /* 17 */
> + .name = "Siano Pele Digital Receiver",
> + .type = SMS_PELE,
> + .default_mode = DEVICE_MODE_ISDBT_BDA,
> + },
> + [SMS1XXX_BOARD_SIANO_RIO] = {
> + /* 18 */
> + .name = "Siano Rio Digital Receiver",
> + .type = SMS_RIO,
> + .default_mode = DEVICE_MODE_ISDBT_BDA,
> + },
> + [SMS1XXX_BOARD_SIANO_DENVER_1530] = {
> + /* 19 */
> + .name = "Siano Denver (ATSC-M/H) Digital Receiver",
> + .type = SMS_DENVER_1530,
> + .default_mode = DEVICE_MODE_ATSC,
> + .crystal = 2400,
> + },
> + [SMS1XXX_BOARD_SIANO_DENVER_2160] = {
> + /* 20 */
> + .name = "Siano Denver (TDMB) Digital Receiver",
> + .type = SMS_DENVER_2160,
> + .default_mode = DEVICE_MODE_DAB_TDMB,
> + },
> };
>
> struct sms_board *sms_get_board(unsigned id)
> @@ -109,31 +192,108 @@ struct sms_board *sms_get_board(unsigned id)
> EXPORT_SYMBOL_GPL(sms_get_board);
> static inline void sms_gpio_assign_11xx_default_led_config(
> struct smscore_gpio_config *pGpioConfig) {
> - pGpioConfig->Direction = SMS_GPIO_DIRECTION_OUTPUT;
> - pGpioConfig->InputCharacteristics =
> - SMS_GPIO_INPUT_CHARACTERISTICS_NORMAL;
> - pGpioConfig->OutputDriving = SMS_GPIO_OUTPUT_DRIVING_4mA;
> - pGpioConfig->OutputSlewRate =
> SMS_GPIO_OUTPUT_SLEW_RATE_0_45_V_NS;
> - pGpioConfig->PullUpDown = SMS_GPIO_PULL_UP_DOWN_NONE;
> + pGpioConfig->direction = SMS_GPIO_DIRECTION_OUTPUT;
> + pGpioConfig->input_characteristics =
> SMS_GPIO_INPUT_CHARACTERISTICS_NORMAL;
> + pGpioConfig->output_driving = SMS_GPIO_OUTPUTDRIVING_4mA;
> + pGpioConfig->output_slew_rate =
> SMS_GPIO_OUTPUT_SLEW_RATE_0_45_V_NS;
> + pGpioConfig->pull_up_down = SMS_GPIO_PULL_UP_DOWN_NONE;
> }
>
> int sms_board_event(struct smscore_device_t *coredev,
> enum SMS_BOARD_EVENTS gevent) {
> + int board_id = smscore_get_board_id(coredev);
> + struct sms_board *board = sms_get_board(board_id);
> struct smscore_gpio_config MyGpioConfig;
>
> sms_gpio_assign_11xx_default_led_config(&MyGpioConfig);
>
> switch (gevent) {
> case BOARD_EVENT_POWER_INIT: /* including hotplug */
> + switch (board_id) {
> + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + /* set I/O and turn off all LEDs */
> + smscore_gpio_configure(coredev,
> + board->board_cfg.leds_power,
> + &MyGpioConfig);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.leds_power, 0);
> + smscore_gpio_configure(coredev,
> board->board_cfg.led0,
> + &MyGpioConfig);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led0, 0);
> + smscore_gpio_configure(coredev,
> board->board_cfg.led1,
> + &MyGpioConfig);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led1, 0);
> + break;
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD:
> + /* set I/O and turn off LNA */
> + smscore_gpio_configure(coredev,
> +
> board->board_cfg.foreign_lna0_ctrl,
> + &MyGpioConfig);
> + smscore_gpio_set_level(coredev,
> +
> board->board_cfg.foreign_lna0_ctrl,
> + 0);
> + break;
> + }
> break; /* BOARD_EVENT_BIND */
>
> case BOARD_EVENT_POWER_SUSPEND:
> + switch (board_id) {
> + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev,
> +
> board->board_cfg.leds_power, 0);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led0,
> 0);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led1,
> 0);
> + break;
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD:
> + smscore_gpio_set_level(coredev,
> +
> board->board_cfg.foreign_lna0_ctrl,
> + 0);
> + break;
> + }
> break; /* BOARD_EVENT_POWER_SUSPEND */
>
> case BOARD_EVENT_POWER_RESUME:
> + switch (board_id) {
> + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev,
> +
> board->board_cfg.leds_power, 1);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led0,
> 1);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led1,
> 0);
> + break;
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD:
> + smscore_gpio_set_level(coredev,
> +
> board->board_cfg.foreign_lna0_ctrl,
> + 1);
> + break;
> + }
> break; /* BOARD_EVENT_POWER_RESUME */
>
> case BOARD_EVENT_BIND:
> + switch (board_id) {
> + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.leds_power, 1);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led0, 1);
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led1, 0);
> + break;
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2:
> + case SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD:
> + smscore_gpio_set_level(coredev,
> +
> board->board_cfg.foreign_lna0_ctrl,
> + 1);
> + break;
> + }
> break; /* BOARD_EVENT_BIND */
>
> case BOARD_EVENT_SCAN_PROG:
> @@ -143,8 +303,20 @@ int sms_board_event(struct smscore_device_t
> *coredev,
> case BOARD_EVENT_EMERGENCY_WARNING_SIGNAL:
> break; /* BOARD_EVENT_EMERGENCY_WARNING_SIGNAL */
> case BOARD_EVENT_FE_LOCK:
> + switch (board_id) {
> + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led1, 1);
> + break;
> + }
> break; /* BOARD_EVENT_FE_LOCK */
> case BOARD_EVENT_FE_UNLOCK:
> + switch (board_id) {
> + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev,
> + board->board_cfg.led1,
> 0);
> + break;
> + }
> break; /* BOARD_EVENT_FE_UNLOCK */
> case BOARD_EVENT_DEMOD_LOCK:
> break; /* BOARD_EVENT_DEMOD_LOCK */
> @@ -177,12 +349,12 @@ static int sms_set_gpio(struct smscore_device_t
> *coredev, int pin, int enable)
> {
> int lvl, ret;
> u32 gpio;
> - struct smscore_config_gpio gpioconfig = {
> + struct smscore_gpio_config gpioconfig = {
> .direction = SMS_GPIO_DIRECTION_OUTPUT,
> - .pullupdown = SMS_GPIO_PULLUPDOWN_NONE,
> - .inputcharacteristics =
> SMS_GPIO_INPUTCHARACTERISTICS_NORMAL,
> - .outputslewrate = SMS_GPIO_OUTPUTSLEWRATE_FAST,
> - .outputdriving = SMS_GPIO_OUTPUTDRIVING_4mA,
> + .pull_up_down = SMS_GPIO_PULL_UP_DOWN_NONE,
> + .input_characteristics =
> SMS_GPIO_INPUT_CHARACTERISTICS_NORMAL,
> + .output_slew_rate =
> SMS_GPIO_OUTPUT_SLEW_RATE_FAST,
> + .output_driving = SMS_GPIO_OUTPUTDRIVING_4mA,
> };
>
> if (pin == 0)
> @@ -197,11 +369,11 @@ static int sms_set_gpio(struct smscore_device_t
> *coredev, int pin, int enable)
> lvl = enable ? 1 : 0;
> }
>
> - ret = smscore_configure_gpio(coredev, gpio, &gpioconfig);
> + ret = smscore_gpio_configure(coredev, gpio, &gpioconfig);
> if (ret < 0)
> return ret;
>
> - return smscore_set_gpio(coredev, gpio, lvl);
> + return smscore_gpio_set_level(coredev, gpio, lvl);
> }
>
> int sms_board_setup(struct smscore_device_t *coredev)
> @@ -211,6 +383,7 @@ int sms_board_setup(struct smscore_device_t
> *coredev)
>
> switch (board_id) {
> case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev, board->board_cfg.led1,
> 1);
> /* turn off all LEDs */
> sms_set_gpio(coredev, board->led_power, 0);
> sms_set_gpio(coredev, board->led_hi, 0);
> @@ -233,6 +406,7 @@ int sms_board_power(struct smscore_device_t
> *coredev, int onoff)
>
> switch (board_id) {
> case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
> + smscore_gpio_set_level(coredev, board->board_cfg.led1,
> 0);
> /* power LED */
> sms_set_gpio(coredev,
> board->led_power, onoff ? 1 : 0);
> diff --git a/drivers/media/dvb/siano/sms-cards.h
> b/drivers/media/dvb/siano/sms-cards.h
> index d8cdf75..b4abde5 100644
> --- a/drivers/media/dvb/siano/sms-cards.h
> +++ b/drivers/media/dvb/siano/sms-cards.h
> @@ -37,6 +37,14 @@
> #define SMS1XXX_BOARD_HAUPPAUGE_TIGER_MINICARD_R2 10
> #define SMS1XXX_BOARD_SIANO_NICE 11
> #define SMS1XXX_BOARD_SIANO_VENICE 12
> +#define SMS1XXX_BOARD_SIANO_STELLAR_ROM 13
> +#define SMS1XXX_BOARD_ZTE_DVB_DATA_CARD 14
> +#define SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD 15
> +#define SMS1XXX_BOARD_SIANO_MING 16
> +#define SMS1XXX_BOARD_SIANO_PELE 17
> +#define SMS1XXX_BOARD_SIANO_RIO 18
> +#define SMS1XXX_BOARD_SIANO_DENVER_1530 19
> +#define SMS1XXX_BOARD_SIANO_DENVER_2160 20
>
> struct sms_board_gpio_cfg {
> int lna_vhf_exist;
> @@ -79,6 +87,12 @@ struct sms_board {
>
> /* gpios */
> int led_power, led_hi, led_lo, lna_ctrl, rf_switch;
> + enum ir_kb_type ir_kb_type;
> + char intf_num;
> + int default_mode;
> + unsigned int mtu;
> + unsigned int crystal;
> + struct sms_antenna_config_ST* antenna_config;
> };
>
> struct sms_board *sms_get_board(unsigned id);
> diff --git a/drivers/media/dvb/siano/smscoreapi.c
> b/drivers/media/dvb/siano/smscoreapi.c
> index 78765ed..d1bcbc3 100644
> --- a/drivers/media/dvb/siano/smscoreapi.c
> +++ b/drivers/media/dvb/siano/smscoreapi.c
> @@ -1290,53 +1290,6 @@ int smsclient_sendrequest(struct smscore_client_t
> *client,
> EXPORT_SYMBOL_GPL(smsclient_sendrequest);
>
>
> -/* old GPIO managements implementation */
> -int smscore_configure_gpio(struct smscore_device_t *coredev, u32 pin,
> - struct smscore_config_gpio *pinconfig)
> -{
> - struct {
> - struct SmsMsgHdr_ST hdr;
> - u32 data[6];
> - } msg;
> -
> - if (coredev->device_flags & SMS_DEVICE_FAMILY2) {
> - msg.hdr.msgSrcId = DVBT_BDA_CONTROL_MSG_ID;
> - msg.hdr.msgDstId = HIF_TASK;
> - msg.hdr.msgFlags = 0;
> - msg.hdr.msgType = MSG_SMS_GPIO_CONFIG_EX_REQ;
> - msg.hdr.msgLength = sizeof(msg);
> -
> - msg.data[0] = pin;
> - msg.data[1] = pinconfig->pullupdown;
> -
> - /* Convert slew rate for Nova: Fast(0) = 3 / Slow(1) =
> 0; */
> - msg.data[2] = pinconfig->outputslewrate == 0 ? 3 : 0;
> -
> - switch (pinconfig->outputdriving) {
> - case SMS_GPIO_OUTPUTDRIVING_16mA:
> - msg.data[3] = 7; /* Nova - 16mA */
> - break;
> - case SMS_GPIO_OUTPUTDRIVING_12mA:
> - msg.data[3] = 5; /* Nova - 11mA */
> - break;
> - case SMS_GPIO_OUTPUTDRIVING_8mA:
> - msg.data[3] = 3; /* Nova - 7mA */
> - break;
> - case SMS_GPIO_OUTPUTDRIVING_4mA:
> - default:
> - msg.data[3] = 2; /* Nova - 4mA */
> - break;
> - }
> -
> - msg.data[4] = pinconfig->direction;
> - msg.data[5] = 0;
> - } else /* TODO: SMS_DEVICE_FAMILY1 */
> - return -EINVAL;
> -
> - return coredev->sendrequest_handler(coredev->context,
> - &msg, sizeof(msg));
> -}
> -
> int smscore_set_gpio(struct smscore_device_t *coredev, u32 pin, int
> level)
> {
> struct {
> @@ -1460,19 +1413,19 @@ int smscore_gpio_configure(struct
> smscore_device_t *coredev, u8 PinNum,
>
> pMsg->msgData[1] = TranslatedPinNum;
> pMsg->msgData[2] = GroupNum;
> - ElectricChar = (pGpioConfig->PullUpDown)
> - | (pGpioConfig->InputCharacteristics <<
> 2)
> - | (pGpioConfig->OutputSlewRate << 3)
> - | (pGpioConfig->OutputDriving << 4);
> + ElectricChar = (pGpioConfig->pull_up_down)
> + | (pGpioConfig->input_characteristics <<
> 2)
> + | (pGpioConfig->output_slew_rate << 3)
> + | (pGpioConfig->output_driving << 4);
> pMsg->msgData[3] = ElectricChar;
> - pMsg->msgData[4] = pGpioConfig->Direction;
> + pMsg->msgData[4] = pGpioConfig->direction;
> pMsg->msgData[5] = groupCfg;
> } else {
> pMsg->xMsgHeader.msgType = MSG_SMS_GPIO_CONFIG_EX_REQ;
> - pMsg->msgData[1] = pGpioConfig->PullUpDown;
> - pMsg->msgData[2] = pGpioConfig->OutputSlewRate;
> - pMsg->msgData[3] = pGpioConfig->OutputDriving;
> - pMsg->msgData[4] = pGpioConfig->Direction;
> + pMsg->msgData[1] = pGpioConfig->pull_up_down;
> + pMsg->msgData[2] = pGpioConfig->output_slew_rate;
> + pMsg->msgData[3] = pGpioConfig->output_driving;
> + pMsg->msgData[4] = pGpioConfig->direction;
> pMsg->msgData[5] = 0;
> }
>
> diff --git a/drivers/media/dvb/siano/smscoreapi.h
> b/drivers/media/dvb/siano/smscoreapi.h
> index 8ecadec..d2a184e 100644
> --- a/drivers/media/dvb/siano/smscoreapi.h
> +++ b/drivers/media/dvb/siano/smscoreapi.h
> @@ -2,7 +2,7 @@
>
> Siano Mobile Silicon, Inc.
> MDTV receiver kernel modules.
> -Copyright (C) 2006-2008, Uri Shkolnik, Anatoly Greenblat
> +Copyright (C) 2006-2011, Doron Cohen
>
> This program is free software: you can redistribute it and/or modify
> it under the terms of the GNU General Public License as published by
> @@ -51,15 +51,23 @@ along with this program. If not, see
> <http://www.gnu.org/licenses/>.
> #define SMS_ALIGN_ADDRESS(addr) \
> ((((uintptr_t)(addr)) + (SMS_DMA_ALIGNMENT-1)) &
> ~(SMS_DMA_ALIGNMENT-1))
>
> +#define SMS_DEVICE_FAMILY1 0
> #define SMS_DEVICE_FAMILY2 1
> #define SMS_ROM_NO_RESPONSE 2
> #define SMS_DEVICE_NOT_READY 0x8000000
>
> enum sms_device_type_st {
> + SMS_UNKNOWN_TYPE = -1,
> SMS_STELLAR = 0,
> SMS_NOVA_A0,
> SMS_NOVA_B0,
> SMS_VEGA,
> + SMS_VENICE,
> + SMS_MING,
> + SMS_PELE,
> + SMS_RIO,
> + SMS_DENVER_1530,
> + SMS_DENVER_2160,
> SMS_NUM_OF_DEVICE_TYPES
> };
>
> @@ -278,6 +286,9 @@ enum SMS_DEVICE_MODE {
> DEVICE_MODE_ISDBT_BDA,
> DEVICE_MODE_CMMB,
> DEVICE_MODE_RAW_TUNER,
> + DEVICE_MODE_FM_TUNER,
> + DEVICE_MODE_FM_TUNER_BDA,
> + DEVICE_MODE_ATSC,
> DEVICE_MODE_MAX,
> };
>
> @@ -624,46 +635,21 @@ struct SMSHOSTLIB_I2C_RES_ST {
> };
>
>
> -struct smscore_config_gpio {
> -#define SMS_GPIO_DIRECTION_INPUT 0
> -#define SMS_GPIO_DIRECTION_OUTPUT 1
> - u8 direction;
> -
> -#define SMS_GPIO_PULLUPDOWN_NONE 0
> -#define SMS_GPIO_PULLUPDOWN_PULLDOWN 1
> -#define SMS_GPIO_PULLUPDOWN_PULLUP 2
> -#define SMS_GPIO_PULLUPDOWN_KEEPER 3
> - u8 pullupdown;
> -
> -#define SMS_GPIO_INPUTCHARACTERISTICS_NORMAL 0
> -#define SMS_GPIO_INPUTCHARACTERISTICS_SCHMITT 1
> - u8 inputcharacteristics;
> -
> -#define SMS_GPIO_OUTPUTSLEWRATE_FAST 0
> -#define SMS_GPIO_OUTPUTSLEWRATE_SLOW 1
> - u8 outputslewrate;
> -
> -#define SMS_GPIO_OUTPUTDRIVING_4mA 0
> -#define SMS_GPIO_OUTPUTDRIVING_8mA 1
> -#define SMS_GPIO_OUTPUTDRIVING_12mA 2
> -#define SMS_GPIO_OUTPUTDRIVING_16mA 3
> - u8 outputdriving;
> -};
>
> struct smscore_gpio_config {
> #define SMS_GPIO_DIRECTION_INPUT 0
> #define SMS_GPIO_DIRECTION_OUTPUT 1
> - u8 Direction;
> + u8 direction;
>
> #define SMS_GPIO_PULL_UP_DOWN_NONE 0
> #define SMS_GPIO_PULL_UP_DOWN_PULLDOWN 1
> #define SMS_GPIO_PULL_UP_DOWN_PULLUP 2
> #define SMS_GPIO_PULL_UP_DOWN_KEEPER 3
> - u8 PullUpDown;
> + u8 pull_up_down;
>
> #define SMS_GPIO_INPUT_CHARACTERISTICS_NORMAL 0
> #define SMS_GPIO_INPUT_CHARACTERISTICS_SCHMITT 1
> - u8 InputCharacteristics;
> + u8 input_characteristics;
>
> #define SMS_GPIO_OUTPUT_SLEW_RATE_SLOW 1 /* 10xx */
> #define SMS_GPIO_OUTPUT_SLEW_RATE_FAST 0 /* 10xx */
> @@ -673,22 +659,22 @@ struct smscore_gpio_config {
> #define SMS_GPIO_OUTPUT_SLEW_RATE_0_9_V_NS 1 /* 11xx */
> #define SMS_GPIO_OUTPUT_SLEW_RATE_1_7_V_NS 2 /* 11xx */
> #define SMS_GPIO_OUTPUT_SLEW_RATE_3_3_V_NS 3 /* 11xx */
> - u8 OutputSlewRate;
> -
> -#define SMS_GPIO_OUTPUT_DRIVING_S_4mA 0 /* 10xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_S_8mA 1 /* 10xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_S_12mA 2 /* 10xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_S_16mA 3 /* 10xx */
> -
> -#define SMS_GPIO_OUTPUT_DRIVING_1_5mA 0 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_2_8mA 1 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_4mA 2 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_7mA 3 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_10mA 4 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_11mA 5 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_14mA 6 /* 11xx */
> -#define SMS_GPIO_OUTPUT_DRIVING_16mA 7 /* 11xx */
> - u8 OutputDriving;
> + u8 output_slew_rate;
> +
> +#define SMS_GPIO_OUTPUTDRIVING_S_4mA 0 /* 10xx */
> +#define SMS_GPIO_OUTPUTDRIVING_S_8mA 1 /* 10xx */
> +#define SMS_GPIO_OUTPUTDRIVING_S_12mA 2 /* 10xx */
> +#define SMS_GPIO_OUTPUTDRIVING_S_16mA 3 /* 10xx */
> +
> +#define SMS_GPIO_OUTPUTDRIVING_1_5mA 0 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_2_8mA 1 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_4mA 2 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_7mA 3 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_10mA 4 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_11mA 5 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_14mA 6 /* 11xx */
> +#define SMS_GPIO_OUTPUTDRIVING_16mA 7 /* 11xx */
> + u8 output_driving;
> };
>
> extern void smscore_registry_setmode(char *devpath, int mode);
> @@ -732,10 +718,6 @@ struct smscore_buffer_t *smscore_getbuffer(struct
> smscore_device_t *coredev);
> extern void smscore_putbuffer(struct smscore_device_t *coredev,
> struct smscore_buffer_t *cb);
>
> -/* old GPIO management */
> -int smscore_configure_gpio(struct smscore_device_t *coredev, u32 pin,
> - struct smscore_config_gpio *pinconfig);
> -int smscore_set_gpio(struct smscore_device_t *coredev, u32 pin, int
> level);
>
> /* new GPIO management */
> extern int smscore_gpio_configure(struct smscore_device_t *coredev, u8
> PinNum,
> diff --git a/drivers/media/dvb/siano/smsir.h
> b/drivers/media/dvb/siano/smsir.h
> index ae92b3a..1a694bc 100644
> --- a/drivers/media/dvb/siano/smsir.h
> +++ b/drivers/media/dvb/siano/smsir.h
> @@ -32,6 +32,11 @@ along with this program. If not, see
> <http://www.gnu.org/licenses/>.
>
> #define IR_DEFAULT_TIMEOUT 100
>
> +enum ir_kb_type {
> + SMS_IR_KB_DEFAULT_TV,
> + SMS_IR_KB_HCW_SILVER
> +};
> +
> struct smscore_device_t;
>
> struct ir_t {
> diff --git a/drivers/media/dvb/siano/smsusb.c
> b/drivers/media/dvb/siano/smsusb.c
> index 0b8da57..b5b09bf 100644
> --- a/drivers/media/dvb/siano/smsusb.c
> +++ b/drivers/media/dvb/siano/smsusb.c
> @@ -483,7 +483,7 @@ static int smsusb_resume(struct usb_interface *intf)
>
> static const struct usb_device_id smsusb_id_table[] __devinitconst = {
> { USB_DEVICE(0x187f, 0x0010),
> - .driver_info = SMS1XXX_BOARD_SIANO_STELLAR },
> + .driver_info = SMS1XXX_BOARD_SIANO_STELLAR_ROM },
> { USB_DEVICE(0x187f, 0x0100),
> .driver_info = SMS1XXX_BOARD_SIANO_STELLAR },
> { USB_DEVICE(0x187f, 0x0200),
> @@ -526,6 +526,22 @@ static const struct usb_device_id smsusb_id_table[]
> __devinitconst = {
> .driver_info = SMS1XXX_BOARD_SIANO_NICE },
> { USB_DEVICE(0x187f, 0x0301),
> .driver_info = SMS1XXX_BOARD_SIANO_VENICE },
> + { USB_DEVICE(0x187f, 0x0302),
> + .driver_info = SMS1XXX_BOARD_SIANO_VENICE },
> + { USB_DEVICE(0x187f, 0x0310),
> + .driver_info = SMS1XXX_BOARD_SIANO_MING },
> + { USB_DEVICE(0x187f, 0x0500),
> + .driver_info = SMS1XXX_BOARD_SIANO_PELE },
>
> + { USB_DEVICE(0x187f, 0x0600),
> + .driver_info = SMS1XXX_BOARD_SIANO_RIO },
> + { USB_DEVICE(0x187f, 0x0700),
> + .driver_info = SMS1XXX_BOARD_SIANO_DENVER_2160 },
> + { USB_DEVICE(0x187f, 0x0800),
> + .driver_info = SMS1XXX_BOARD_SIANO_DENVER_1530 },
> + { USB_DEVICE(0x19D2, 0x0086),
> + .driver_info = SMS1XXX_BOARD_ZTE_DVB_DATA_CARD },
> + { USB_DEVICE(0x19D2, 0x0078),
> + .driver_info = SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD },
> { USB_DEVICE(0x2040, 0xb900),
> .driver_info = SMS1XXX_BOARD_HAUPPAUGE_WINDHAM },
> { USB_DEVICE(0x2040, 0xb910),
>
>
>
> Thanks,
> Doron
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>

--
Jesper Juhl <jj@xxxxxxxxxxxxx> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/