Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *
  3  *
  4  *  Copyright (C) 2005 Mike Isely <isely@pobox.com>
  5  *  Copyright (C) 2004 Aurelien Alleaume <slts@free.fr>
  6  *
  7  *  This program is free software; you can redistribute it and/or modify
  8  *  it under the terms of the GNU General Public License as published by
  9  *  the Free Software Foundation; either version 2 of the License
 10  *
 11  *  This program is distributed in the hope that it will be useful,
 12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14  *  GNU General Public License for more details.
 15  *
 16  *  You should have received a copy of the GNU General Public License
 17  *  along with this program; if not, write to the Free Software
 18  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 19  *
 20  */
 21 
 22 #include "pvrusb2-audio.h"
 23 #include "pvrusb2-hdw-internal.h"
 24 #include "pvrusb2-debug.h"
 25 #include <linux/videodev2.h>
 26 #include <media/msp3400.h>
 27 #include <media/v4l2-common.h>
 28 
 29 
 30 struct routing_scheme {
 31         const int *def;
 32         unsigned int cnt;
 33 };
 34 
 35 static const int routing_scheme0[] = {
 36         [PVR2_CVAL_INPUT_TV]        = MSP_INPUT_DEFAULT,
 37         [PVR2_CVAL_INPUT_RADIO]     = MSP_INPUT(MSP_IN_SCART2,
 38                                                 MSP_IN_TUNER1,
 39                                                 MSP_DSP_IN_SCART,
 40                                                 MSP_DSP_IN_SCART),
 41         [PVR2_CVAL_INPUT_COMPOSITE] = MSP_INPUT(MSP_IN_SCART1,
 42                                                 MSP_IN_TUNER1,
 43                                                 MSP_DSP_IN_SCART,
 44                                                 MSP_DSP_IN_SCART),
 45         [PVR2_CVAL_INPUT_SVIDEO]    = MSP_INPUT(MSP_IN_SCART1,
 46                                                 MSP_IN_TUNER1,
 47                                                 MSP_DSP_IN_SCART,
 48                                                 MSP_DSP_IN_SCART),
 49 };
 50 
 51 static const struct routing_scheme routing_def0 = {
 52         .def = routing_scheme0,
 53         .cnt = ARRAY_SIZE(routing_scheme0),
 54 };
 55 
 56 static const struct routing_scheme *routing_schemes[] = {
 57         [PVR2_ROUTING_SCHEME_HAUPPAUGE] = &routing_def0,
 58 };
 59 
 60 void pvr2_msp3400_subdev_update(struct pvr2_hdw *hdw, struct v4l2_subdev *sd)
 61 {
 62         if (hdw->input_dirty || hdw->force_dirty) {
 63                 const struct routing_scheme *sp;
 64                 unsigned int sid = hdw->hdw_desc->signal_routing_scheme;
 65                 u32 input;
 66 
 67                 pvr2_trace(PVR2_TRACE_CHIPS, "subdev msp3400 v4l2 set_stereo");
 68 
 69                 if ((sid < ARRAY_SIZE(routing_schemes)) &&
 70                     ((sp = routing_schemes[sid]) != NULL) &&
 71                     (hdw->input_val >= 0) &&
 72                     (hdw->input_val < sp->cnt)) {
 73                         input = sp->def[hdw->input_val];
 74                 } else {
 75                         pvr2_trace(PVR2_TRACE_ERROR_LEGS,
 76                                    "*** WARNING *** subdev msp3400 set_input:"
 77                                    " Invalid routing scheme (%u)"
 78                                    " and/or input (%d)",
 79                                    sid, hdw->input_val);
 80                         return;
 81                 }
 82                 sd->ops->audio->s_routing(sd, input,
 83                         MSP_OUTPUT(MSP_SC_IN_DSP_SCART1), 0);
 84         }
 85 }
 86 
 87 /*
 88   Stuff for Emacs to see, in order to encourage consistent editing style:
 89   *** Local Variables: ***
 90   *** mode: c ***
 91   *** fill-column: 70 ***
 92   *** tab-width: 8 ***
 93   *** c-basic-offset: 8 ***
 94   *** End: ***
 95   */
 96 
  This page was automatically generated by the LXR engine.