Em Mon, 18 May 2009 04:15:51 -0300
Mauro Carvalho Chehab <mche...@infradead.org> escreveu:

> Em Sun, 17 May 2009 01:57:45 -0700 (PDT)
> Uri Shkolnik <uri...@yahoo.com> escreveu:
> 
> > 
> > # HG changeset patch
> > # User Uri Shkolnik <u...@siano-ms.com>
> > # Date 1242331325 -10800
> > # Node ID 415ca02f74b960c02ddfa7ee719cf87726d97490
> > # Parent  8b645aa2ab13f22b8d4dcd8e6353fce2c976cd34
> > [0905_23] Siano: gpio - use new implementation
> > 
> > From: Uri Shkolnik <u...@siano-ms.com>
> > 
> > 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 <u...@siano-ms.com>
> > 
> > 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 majord...@vger.kernel.org
> > 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to