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-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html