Em Mon, 18 May 2009 04:15:51 -0300 Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx> escreveu: > Em Sun, 17 May 2009 01:57:45 -0700 (PDT) > Uri Shkolnik <urishk@xxxxxxxxx> escreveu: > > > > > # HG changeset patch > > # User Uri Shkolnik <uris@xxxxxxxxxxxx> > > # Date 1242331325 -10800 > > # Node ID 415ca02f74b960c02ddfa7ee719cf87726d97490 > > # Parent 8b645aa2ab13f22b8d4dcd8e6353fce2c976cd34 > > [0905_23] Siano: gpio - use new implementation > > > > From: Uri Shkolnik <uris@xxxxxxxxxxxx> > > > > Start using the corrected gpio implementation > > Hmm... > > WARNING: "smscore_configure_gpio" [/home/v4l/master/v4l/sms1xxx.ko] undefined! > WARNING: "smscore_set_gpio" [/home/v4l/master/v4l/sms1xxx.ko] undefined! In time: The errors above were caused by the previous patch: [0905_22] Siano: smscore - fix bug in gpio implementation > > Those functions weren't defined on any module. It seems that you forgot to > submit a previous patch. > > Also, since Hauppauge complained about the gpio changes, I'd like to have > Michael's ack, especially if the patch affects the behavior of the existing > Hauppauge supported boards. > > Cheers, > Mauro. > > > > > > Priority: normal > > > > Signed-off-by: Uri Shkolnik <uris@xxxxxxxxxxxx> > > > > diff -r 8b645aa2ab13 -r 415ca02f74b9 linux/drivers/media/dvb/siano/sms-cards.c > > --- a/linux/drivers/media/dvb/siano/sms-cards.c Thu May 14 22:28:38 2009 +0300 > > +++ b/linux/drivers/media/dvb/siano/sms-cards.c Thu May 14 23:02:05 2009 +0300 > > @@ -17,6 +17,7 @@ > > * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > > */ > > > > +#include "smscoreapi.h" > > #include "sms-cards.h" > > #include "smsir.h" > > > > @@ -155,6 +156,174 @@ struct sms_board *sms_get_board(int 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_INPUTCHARACTERISTICS_NORMAL; > > + pGpioConfig->OutputDriving = SMS_GPIO_OUTPUTDRIVING_4mA; > > + pGpioConfig->OutputSlewRate = SMS_GPIO_OUTPUTSLEWRATE_0_45_V_NS; > > + pGpioConfig->PullUpDown = SMS_GPIO_PULLUPDOWN_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: > > + break; /* BOARD_EVENT_SCAN_PROG */ > > + case BOARD_EVENT_SCAN_COMP: > > + break; /* BOARD_EVENT_SCAN_COMP */ > > + 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 */ > > + case BOARD_EVENT_DEMOD_UNLOCK: > > + break; /* BOARD_EVENT_DEMOD_UNLOCK */ > > + case BOARD_EVENT_RECEPTION_MAX_4: > > + break; /* BOARD_EVENT_RECEPTION_MAX_4 */ > > + case BOARD_EVENT_RECEPTION_3: > > + break; /* BOARD_EVENT_RECEPTION_3 */ > > + case BOARD_EVENT_RECEPTION_2: > > + break; /* BOARD_EVENT_RECEPTION_2 */ > > + case BOARD_EVENT_RECEPTION_1: > > + break; /* BOARD_EVENT_RECEPTION_1 */ > > + case BOARD_EVENT_RECEPTION_LOST_0: > > + break; /* BOARD_EVENT_RECEPTION_LOST_0 */ > > + case BOARD_EVENT_MULTIPLEX_OK: > > + switch (board_id) { > > + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM: > > + smscore_gpio_set_level(coredev, > > + board->board_cfg.led1, 1); > > + break; > > + } > > + break; /* BOARD_EVENT_MULTIPLEX_OK */ > > + case BOARD_EVENT_MULTIPLEX_ERRORS: > > + switch (board_id) { > > + case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM: > > + smscore_gpio_set_level(coredev, > > + board->board_cfg.led1, 0); > > + break; > > + } > > + break; /* BOARD_EVENT_MULTIPLEX_ERRORS */ > > + > > + default: > > + sms_err("Unknown SMS board event"); > > + break; > > + } > > + return 0; > > +} > > +EXPORT_SYMBOL_GPL(sms_board_event); > > + > > static int sms_set_gpio(struct smscore_device_t *coredev, int pin, int enable) > > { > > int lvl, ret; > > @@ -179,11 +348,11 @@ static int sms_set_gpio(struct smscore_d > > 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) > > diff -r 8b645aa2ab13 -r 415ca02f74b9 linux/drivers/media/dvb/siano/sms-cards.h > > --- a/linux/drivers/media/dvb/siano/sms-cards.h Thu May 14 22:28:38 2009 +0300 > > +++ b/linux/drivers/media/dvb/siano/sms-cards.h Thu May 14 23:02:05 2009 +0300 > > @@ -86,6 +86,30 @@ extern struct usb_device_id smsusb_id_ta > > extern struct usb_device_id smsusb_id_table[]; > > extern struct smscore_device_t *coredev; > > > > +enum SMS_BOARD_EVENTS { > > + BOARD_EVENT_POWER_INIT, > > + BOARD_EVENT_POWER_SUSPEND, > > + BOARD_EVENT_POWER_RESUME, > > + BOARD_EVENT_BIND, > > + BOARD_EVENT_SCAN_PROG, > > + BOARD_EVENT_SCAN_COMP, > > + BOARD_EVENT_EMERGENCY_WARNING_SIGNAL, > > + BOARD_EVENT_FE_LOCK, > > + BOARD_EVENT_FE_UNLOCK, > > + BOARD_EVENT_DEMOD_LOCK, > > + BOARD_EVENT_DEMOD_UNLOCK, > > + BOARD_EVENT_RECEPTION_MAX_4, > > + BOARD_EVENT_RECEPTION_3, > > + BOARD_EVENT_RECEPTION_2, > > + BOARD_EVENT_RECEPTION_1, > > + BOARD_EVENT_RECEPTION_LOST_0, > > + BOARD_EVENT_MULTIPLEX_OK, > > + BOARD_EVENT_MULTIPLEX_ERRORS > > +}; > > + > > +int sms_board_event(struct smscore_device_t *coredev, > > + enum SMS_BOARD_EVENTS gevent); > > + > > int sms_board_setup(struct smscore_device_t *coredev); > > > > #define SMS_LED_OFF 0 > > diff -r 8b645aa2ab13 -r 415ca02f74b9 linux/drivers/media/dvb/siano/smscoreapi.h > > --- a/linux/drivers/media/dvb/siano/smscoreapi.h Thu May 14 22:28:38 2009 +0300 > > +++ b/linux/drivers/media/dvb/siano/smscoreapi.h Thu May 14 23:02:05 2009 +0300 > > @@ -633,9 +633,12 @@ extern void smscore_putbuffer(struct sms > > extern void smscore_putbuffer(struct smscore_device_t *coredev, > > struct smscore_buffer_t *cb); > > > > -int smscore_configure_gpio(struct smscore_device_t *coredev, u32 pin, > > - struct smscore_gpio_config *pinconfig); > > -int smscore_set_gpio(struct smscore_device_t *coredev, u32 pin, int level); > > +int smscore_gpio_configure(struct smscore_device_t *coredev, u8 PinNum, > > + struct smscore_gpio_config *pGpioConfig); > > +int smscore_gpio_set_level(struct smscore_device_t *coredev, u8 PinNum, > > + u8 NewLevel); > > +int smscore_gpio_get_level(struct smscore_device_t *coredev, u8 PinNum, > > + u8 *level); > > > > void smscore_set_board_id(struct smscore_device_t *core, int id); > > int smscore_get_board_id(struct smscore_device_t *core); > > > > > > > > > > -- > > 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 > > > > > Cheers, > Mauro Cheers, Mauro -- 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