Revision: 5760
Author: pebender
Date: Sat Oct 31 07:26:41 2009
Log: - Added saa7164 kernel module (backported from next-20091030).


http://code.google.com/p/minimyth/source/detail?r=5760

Added:
   
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-saa7164.patch
Modified:
  /trunk/gar-minimyth/html/minimyth/document-changelog.txt
  /trunk/gar-minimyth/html/minimyth/document-hardware.html
  /trunk/gar-minimyth/script/kernel-2.6.31/linux/Makefile
  /trunk/gar-minimyth/script/kernel-2.6.31/linux/checksums
   
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-c3-2.config
   
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-c3.config
   
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-pentium-mmx.config
   
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-x86_64-x86-64.config
   
/trunk/gar-minimyth/script/meta/minimyth/files/source/lists/software/minimyth-lib-list.backend

=======================================
--- /dev/null
+++  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-saa7164.patch
        
Sat Oct 31 07:26:41 2009
@@ -0,0 +1,5535 @@
+diff -Naur linux-2.6.31.5-old/Documentation/video4linux/CARDLIST.saa7164  
linux-2.6.31.5-new/Documentation/video4linux/CARDLIST.saa7164
+--- linux-2.6.31.5-old/Documentation/video4linux/CARDLIST.saa7164       
1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.31.5-new/Documentation/video4linux/CARDLIST.saa7164       
2009-10-15 17:41:50.000000000 -0700
+@@ -0,0 +1,9 @@
++  0 -> Unknown
++  1 -> Generic Rev2
++  2 -> Generic Rev3
++  3 -> Hauppauge WinTV-HVR2250                              
[0070:8880,0070:8810]
++  4 -> Hauppauge WinTV-HVR2200                             [0070:8980]
++  5 -> Hauppauge WinTV-HVR2200                             [0070:8900]
++  6 -> Hauppauge WinTV-HVR2200                             [0070:8901]
++  7 -> Hauppauge WinTV-HVR2250                              
[0070:8891,0070:8851]
++  8 -> Hauppauge WinTV-HVR2250                             [0070:88A1]
+diff -Naur linux-2.6.31.5-old/drivers/media/common/tuners/tda18271-fe.c  
linux-2.6.31.5-new/drivers/media/common/tuners/tda18271-fe.c
+--- linux-2.6.31.5-old/drivers/media/common/tuners/tda18271-fe.c        
2009-10-22 15:57:56.000000000 -0700
++++ linux-2.6.31.5-new/drivers/media/common/tuners/tda18271-fe.c        
2009-10-31 06:52:02.000000000 -0700
+@@ -27,7 +27,7 @@
+ MODULE_PARM_DESC(debug, "set debug level "
+                "(info=1, map=2, reg=4, adv=8, cal=16 (or-able))");
+
+-static int tda18271_cal_on_startup;
++static int tda18271_cal_on_startup = -1;
+ module_param_named(cal, tda18271_cal_on_startup, int, 0644);
+ MODULE_PARM_DESC(cal, "perform RF tracking filter calibration on  
startup");
+
+@@ -1192,10 +1192,25 @@
+       case 0:
+               goto fail;
+       case 1:
++      {
+               /* new tuner instance */
++              int rf_cal_on_startup;
++
+               priv->gate = (cfg) ? cfg->gate : TDA18271_GATE_AUTO;
+               priv->role = (cfg) ? cfg->role : TDA18271_MASTER;
+               priv->config = (cfg) ? cfg->config : 0;
++
++              /* tda18271_cal_on_startup == -1 when cal
++               * module option is unset */
++              if (tda18271_cal_on_startup == -1) {
++                      /* honor attach-time configuration */
++                      rf_cal_on_startup =
++                              ((cfg) && (cfg->rf_cal_on_startup)) ? 1 : 0;
++              } else {
++                      /* module option overrides attach configuration */
++                      rf_cal_on_startup = tda18271_cal_on_startup;
++              }
++
+               priv->cal_initialized = false;
+               mutex_init(&priv->lock);
+
+@@ -1213,11 +1228,12 @@
+               mutex_lock(&priv->lock);
+               tda18271_init_regs(fe);
+
+-              if ((tda18271_cal_on_startup) && (priv->id == TDA18271HDC2))
++              if ((rf_cal_on_startup) && (priv->id == TDA18271HDC2))
+                       tda18271c2_rf_cal_init(fe);
+
+               mutex_unlock(&priv->lock);
+               break;
++      }
+       default:
+               /* existing tuner instance */
+               fe->tuner_priv = priv;
+diff -Naur linux-2.6.31.5-old/drivers/media/common/tuners/tda18271.h  
linux-2.6.31.5-new/drivers/media/common/tuners/tda18271.h
+--- linux-2.6.31.5-old/drivers/media/common/tuners/tda18271.h  2009-10-22  
15:57:56.000000000 -0700
++++ linux-2.6.31.5-new/drivers/media/common/tuners/tda18271.h  2009-10-31  
06:52:02.000000000 -0700
+@@ -77,6 +77,9 @@
+       /* use i2c gate provided by analog or digital demod */
+       enum tda18271_i2c_gate gate;
+
++      /* force rf tracking filter calibration on startup */
++      unsigned int rf_cal_on_startup:1;
++
+       /* some i2c providers cant write all 39 registers at once */
+       unsigned int small_i2c:1;
+
+diff -Naur linux-2.6.31.5-old/drivers/media/video/Kconfig  
linux-2.6.31.5-new/drivers/media/video/Kconfig
+--- linux-2.6.31.5-old/drivers/media/video/Kconfig     2009-10-22  
15:57:56.000000000 -0700
++++ linux-2.6.31.5-new/drivers/media/video/Kconfig     2009-10-31  
06:32:20.000000000 -0700
+@@ -690,6 +690,8 @@
+
+ source "drivers/media/video/cx18/Kconfig"
+
++source "drivers/media/video/saa7164/Kconfig"
++
+ config VIDEO_M32R_AR
+       tristate "AR devices"
+       depends on M32R && VIDEO_V4L1
+diff -Naur linux-2.6.31.5-old/drivers/media/video/Makefile  
linux-2.6.31.5-new/drivers/media/video/Makefile
+--- linux-2.6.31.5-old/drivers/media/video/Makefile    2009-10-22  
15:57:56.000000000 -0700
++++ linux-2.6.31.5-new/drivers/media/video/Makefile    2009-10-31  
06:33:04.000000000 -0700
+@@ -157,6 +157,7 @@
+ obj-$(CONFIG_VIDEO_AU0828) += au0828/
+
+ obj-$(CONFIG_USB_VIDEO_CLASS) += uvc/
++obj-$(CONFIG_VIDEO_SAA7164)     += saa7164/
+
+ obj-$(CONFIG_VIDEO_IR_I2C)  += ir-kbd-i2c.o
+
+diff -Naur linux-2.6.31.5-old/drivers/media/video/saa7164/Kconfig  
linux-2.6.31.5-new/drivers/media/video/saa7164/Kconfig
+--- linux-2.6.31.5-old/drivers/media/video/saa7164/Kconfig     1969-12-31  
16:00:00.000000000 -0800
++++ linux-2.6.31.5-new/drivers/media/video/saa7164/Kconfig     2009-10-15  
17:41:50.000000000 -0700
+@@ -0,0 +1,18 @@
++config VIDEO_SAA7164
++      tristate "NXP SAA7164 support"
++      depends on DVB_CORE && PCI && I2C
++      select I2C_ALGOBIT
++      select FW_LOADER
++      select VIDEO_TUNER
++      select VIDEO_TVEEPROM
++      select VIDEOBUF_DVB
++      select DVB_TDA10048 if !DVB_FE_CUSTOMISE
++      select DVB_S5H1411 if !DVB_FE_CUSTOMISE
++      select MEDIA_TUNER_TDA18271 if !MEDIA_TUNER_CUSTOMISE
++      ---help---
++        This is a video4linux driver for NXP SAA7164 based
++        TV cards.
++
++        To compile this driver as a module, choose M here: the
++        module will be called saa7164
++
+diff -Naur linux-2.6.31.5-old/drivers/media/video/saa7164/Makefile  
linux-2.6.31.5-new/drivers/media/video/saa7164/Makefile
+--- linux-2.6.31.5-old/drivers/media/video/saa7164/Makefile    1969-12-31  
16:00:00.000000000 -0800
++++ linux-2.6.31.5-new/drivers/media/video/saa7164/Makefile    2009-10-15  
17:41:50.000000000 -0700
+@@ -0,0 +1,12 @@
++saa7164-objs  := saa7164-cards.o saa7164-core.o saa7164-i2c.o  
saa7164-dvb.o \
++                      saa7164-fw.o saa7164-bus.o saa7164-cmd.o saa7164-api.o \
++                      saa7164-buffer.o
++
++obj-$(CONFIG_VIDEO_SAA7164) += saa7164.o
++
++EXTRA_CFLAGS += -Idrivers/media/video
++EXTRA_CFLAGS += -Idrivers/media/common/tuners
++EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
++EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
++
++EXTRA_CFLAGS += $(extra-cflags-y) $(extra-cflags-m)
+diff -Naur linux-2.6.31.5-old/drivers/media/video/saa7164/saa7164-api.c  
linux-2.6.31.5-new/drivers/media/video/saa7164/saa7164-api.c
+--- linux-2.6.31.5-old/drivers/media/video/saa7164/saa7164-api.c        
1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.31.5-new/drivers/media/video/saa7164/saa7164-api.c        
2009-10-15 17:41:50.000000000 -0700
+@@ -0,0 +1,600 @@
++/*
++ *  Driver for the NXP SAA7164 PCIe bridge
++ *
++ *  Copyright (c) 2009 Steven Toth <[email protected]>
++ *
++ *  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
++ *  the Free Software Foundation; either version 2 of the License, or
++ *  (at your option) any later version.
++ *
++ *  This program is distributed in the hope that it will be useful,
++ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *
++ *  GNU General Public License for more details.
++ *
++ *  You should have received a copy of the GNU General Public License
++ *  along with this program; if not, write to the Free Software
++ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/wait.h>
++
++#include "saa7164.h"
++
++int saa7164_api_transition_port(struct saa7164_tsport *port, u8 mode)
++{
++      int ret;
++
++      ret = saa7164_cmd_send(port->dev, port->hwcfg.unitid, SET_CUR,
++              SAA_STATE_CONTROL, sizeof(mode), &mode);
++      if (ret != SAA_OK)
++              printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
++
++      return ret;
++}
++
++int saa7164_api_get_fw_version(struct saa7164_dev *dev, u32 *version)
++{
++      int ret;
++
++      ret = saa7164_cmd_send(dev, 0, GET_CUR,
++              GET_FW_VERSION_CONTROL, sizeof(u32), version);
++      if (ret != SAA_OK)
++              printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
++
++      return ret;
++}
++
++int saa7164_api_read_eeprom(struct saa7164_dev *dev, u8 *buf, int buflen)
++{
++      u8 reg[] = { 0x0f, 0x00 };
++
++      if (buflen < 128)
++              return -ENOMEM;
++
++      /* Assumption: Hauppauge eeprom is at 0xa0 on on bus 0 */
++      /* TODO: Pull the details from the boards struct */
++      return saa7164_api_i2c_read(&dev->i2c_bus[0], 0xa0 >> 1, sizeof(reg),
++              &reg[0], 128, buf);
++}
++
++
++int saa7164_api_configure_port_mpeg2ts(struct saa7164_dev *dev,
++      struct saa7164_tsport *port,
++      tmComResTSFormatDescrHeader_t *tsfmt)
++{
++      dprintk(DBGLVL_API, "    bFormatIndex = 0x%x\n", tsfmt->bFormatIndex);
++      dprintk(DBGLVL_API, "    bDataOffset  = 0x%x\n", tsfmt->bDataOffset);
++      dprintk(DBGLVL_API, "    bPacketLength= 0x%x\n", tsfmt->bPacketLength);
++      dprintk(DBGLVL_API, "    bStrideLength= 0x%x\n", tsfmt->bStrideLength);
++      dprintk(DBGLVL_API, "    bguid        = (....)\n");
++
++      /* Cache the hardware configuration in the port */
++
++      port->bufcounter = port->hwcfg.BARLocation;
++      port->pitch = port->hwcfg.BARLocation + (2 * sizeof(u32));
++      port->bufsize = port->hwcfg.BARLocation + (3 * sizeof(u32));
++      port->bufoffset = port->hwcfg.BARLocation + (4 * sizeof(u32));
++      port->bufptr32l = port->hwcfg.BARLocation +
++              (4 * sizeof(u32)) +
++              (sizeof(u32) * port->hwcfg.buffercount) + sizeof(u32);
++      port->bufptr32h = port->hwcfg.BARLocation +
++              (4 * sizeof(u32)) +
++              (sizeof(u32) * port->hwcfg.buffercount);
++      port->bufptr64 = port->hwcfg.BARLocation +
++              (4 * sizeof(u32)) +
++              (sizeof(u32) * port->hwcfg.buffercount);
++      dprintk(DBGLVL_API, "   = port->hwcfg.BARLocation = 0x%x\n",
++              port->hwcfg.BARLocation);
++
++      dprintk(DBGLVL_API, "   = VS_FORMAT_MPEGTS (becomes dev->ts[%d])\n",
++              port->nr);
++
++      return 0;
++}
++
++int saa7164_api_dump_subdevs(struct saa7164_dev *dev, u8 *buf, int len)
++{
++      struct saa7164_tsport *port = 0;
++      u32 idx, next_offset;
++      int i;
++      tmComResDescrHeader_t *hdr, *t;
++      tmComResExtDevDescrHeader_t *exthdr;
++      tmComResPathDescrHeader_t *pathhdr;
++      tmComResAntTermDescrHeader_t *anttermhdr;
++      tmComResTunerDescrHeader_t *tunerunithdr;
++      tmComResDMATermDescrHeader_t *vcoutputtermhdr;
++      tmComResTSFormatDescrHeader_t *tsfmt;
++      u32 currpath = 0;
++
++      dprintk(DBGLVL_API,
++              "%s(?,?,%d) sizeof(tmComResDescrHeader_t) = %d bytes\n",
++              __func__, len, (u32)sizeof(tmComResDescrHeader_t));
++
++      for (idx = 0; idx < (len - sizeof(tmComResDescrHeader_t)); ) {
++
++              hdr = (tmComResDescrHeader_t *)(buf + idx);
++
++              if (hdr->type != CS_INTERFACE)
++                      return SAA_ERR_NOT_SUPPORTED;
++
++              dprintk(DBGLVL_API, "@ 0x%x = \n", idx);
++              switch (hdr->subtype) {
++              case GENERAL_REQUEST:
++                      dprintk(DBGLVL_API, " GENERAL_REQUEST\n");
++                      break;
++              case VC_TUNER_PATH:
++                      dprintk(DBGLVL_API, " VC_TUNER_PATH\n");
++                      pathhdr = (tmComResPathDescrHeader_t *)(buf + idx);
++                      dprintk(DBGLVL_API, "  pathid = 0x%x\n",
++                              pathhdr->pathid);
++                      currpath = pathhdr->pathid;
++                      break;
++              case VC_INPUT_TERMINAL:
++                      dprintk(DBGLVL_API, " VC_INPUT_TERMINAL\n");
++                      anttermhdr =
++                              (tmComResAntTermDescrHeader_t *)(buf + idx);
++                      dprintk(DBGLVL_API, "  terminalid   = 0x%x\n",
++                              anttermhdr->terminalid);
++                      dprintk(DBGLVL_API, "  terminaltype = 0x%x\n",
++                              anttermhdr->terminaltype);
++                      switch (anttermhdr->terminaltype) {
++                      case ITT_ANTENNA:
++                              dprintk(DBGLVL_API, "   = ITT_ANTENNA\n");
++                              break;
++                      case LINE_CONNECTOR:
++                              dprintk(DBGLVL_API, "   = LINE_CONNECTOR\n");
++                              break;
++                      case SPDIF_CONNECTOR:
++                              dprintk(DBGLVL_API, "   = SPDIF_CONNECTOR\n");
++                              break;
++                      case COMPOSITE_CONNECTOR:
++                              dprintk(DBGLVL_API,
++                                      "   = COMPOSITE_CONNECTOR\n");
++                              break;
++                      case SVIDEO_CONNECTOR:
++                              dprintk(DBGLVL_API, "   = SVIDEO_CONNECTOR\n");
++                              break;
++                      case COMPONENT_CONNECTOR:
++                              dprintk(DBGLVL_API,
++                                      "   = COMPONENT_CONNECTOR\n");
++                              break;
++                      case STANDARD_DMA:
++                              dprintk(DBGLVL_API, "   = STANDARD_DMA\n");
++                              break;
++                      default:
++                              dprintk(DBGLVL_API, "   = undefined (0x%x)\n",
++                                      anttermhdr->terminaltype);
++                      }
++                      dprintk(DBGLVL_API, "  assocterminal= 0x%x\n",
++                              anttermhdr->assocterminal);
++                      dprintk(DBGLVL_API, "  iterminal    = 0x%x\n",
++                              anttermhdr->iterminal);
++                      dprintk(DBGLVL_API, "  controlsize  = 0x%x\n",
++                              anttermhdr->controlsize);
++                      break;
++              case VC_OUTPUT_TERMINAL:
++                      dprintk(DBGLVL_API, " VC_OUTPUT_TERMINAL\n");
++                      vcoutputtermhdr =
++                              (tmComResDMATermDescrHeader_t *)(buf + idx);
++                      dprintk(DBGLVL_API, "  unitid = 0x%x\n",
++                              vcoutputtermhdr->unitid);
++                      dprintk(DBGLVL_API, "  terminaltype = 0x%x\n",
++                              vcoutputtermhdr->terminaltype);
++                      switch (vcoutputtermhdr->terminaltype) {
++                      case ITT_ANTENNA:
++                              dprintk(DBGLVL_API, "   = ITT_ANTENNA\n");
++                              break;
++                      case LINE_CONNECTOR:
++                              dprintk(DBGLVL_API, "   = LINE_CONNECTOR\n");
++                              break;
++                      case SPDIF_CONNECTOR:
++                              dprintk(DBGLVL_API, "   = SPDIF_CONNECTOR\n");
++                              break;
++                      case COMPOSITE_CONNECTOR:
++                              dprintk(DBGLVL_API,
++                                      "   = COMPOSITE_CONNECTOR\n");
++                              break;
++                      case SVIDEO_CONNECTOR:
++                              dprintk(DBGLVL_API, "   = SVIDEO_CONNECTOR\n");
++                              break;
++                      case COMPONENT_CONNECTOR:
++                              dprintk(DBGLVL_API,
++                                      "   = COMPONENT_CONNECTOR\n");
++                              break;
++                      case STANDARD_DMA:
++                              dprintk(DBGLVL_API, "   = STANDARD_DMA\n");
++                              break;
++                      default:
++                              dprintk(DBGLVL_API, "   = undefined (0x%x)\n",
++                                      vcoutputtermhdr->terminaltype);
++                      }
++                      dprintk(DBGLVL_API, "  assocterminal= 0x%x\n",
++                              vcoutputtermhdr->assocterminal);
++                      dprintk(DBGLVL_API, "  sourceid     = 0x%x\n",
++                              vcoutputtermhdr->sourceid);
++                      dprintk(DBGLVL_API, "  iterminal    = 0x%x\n",
++                              vcoutputtermhdr->iterminal);
++                      dprintk(DBGLVL_API, "  BARLocation  = 0x%x\n",
++                              vcoutputtermhdr->BARLocation);
++                      dprintk(DBGLVL_API, "  flags        = 0x%x\n",
++                              vcoutputtermhdr->flags);
++                      dprintk(DBGLVL_API, "  interruptid  = 0x%x\n",
++                              vcoutputtermhdr->interruptid);
++                      dprintk(DBGLVL_API, "  buffercount  = 0x%x\n",
++                              vcoutputtermhdr->buffercount);
++                      dprintk(DBGLVL_API, "  metadatasize = 0x%x\n",
++                              vcoutputtermhdr->metadatasize);
++                      dprintk(DBGLVL_API, "  controlsize  = 0x%x\n",
++                              vcoutputtermhdr->controlsize);
++                      dprintk(DBGLVL_API, "  numformats   = 0x%x\n",
++                              vcoutputtermhdr->numformats);
++
++                      t = (tmComResDescrHeader_t *)
++                              ((tmComResDMATermDescrHeader_t *)(buf + idx));
++                      next_offset = idx + (vcoutputtermhdr->len);
++                      for (i = 0; i < vcoutputtermhdr->numformats; i++) {
++                              t = (tmComResDescrHeader_t *)
++                                      (buf + next_offset);
++                              switch (t->subtype) {
++                              case VS_FORMAT_MPEG2TS:
++                                      tsfmt =
++                                      (tmComResTSFormatDescrHeader_t *)t;
++                                      if (currpath == 1)
++                                              port = &dev->ts1;
++                                      else
++                                              port = &dev->ts2;
++                                      memcpy(&port->hwcfg, vcoutputtermhdr,
++                                              sizeof(*vcoutputtermhdr));
++                                      saa7164_api_configure_port_mpeg2ts(dev,
++                                              port, tsfmt);
++                                      break;
++                              case VS_FORMAT_MPEG2PS:
++                                      dprintk(DBGLVL_API,
++                                              "   = VS_FORMAT_MPEG2PS\n");
++                                      break;
++                              case VS_FORMAT_VBI:
++                                      dprintk(DBGLVL_API,
++                                              "   = VS_FORMAT_VBI\n");
++                                      break;
++                              case VS_FORMAT_RDS:
++                                      dprintk(DBGLVL_API,
++                                              "   = VS_FORMAT_RDS\n");
++                                      break;
++                              case VS_FORMAT_UNCOMPRESSED:
++                                      dprintk(DBGLVL_API,
++                                      "   = VS_FORMAT_UNCOMPRESSED\n");
++                                      break;
++                              case VS_FORMAT_TYPE:
++                                      dprintk(DBGLVL_API,
++                                              "   = VS_FORMAT_TYPE\n");
++                                      break;
++                              default:
++                                      dprintk(DBGLVL_API,
++                                              "   = undefined (0x%x)\n",
++                                              t->subtype);
++                              }
++                              next_offset += t->len;
++                      }
++
++                      break;
++              case TUNER_UNIT:
++                      dprintk(DBGLVL_API, " TUNER_UNIT\n");
++                      tunerunithdr =
++                              (tmComResTunerDescrHeader_t *)(buf + idx);
++                      dprintk(DBGLVL_API, "  unitid = 0x%x\n",
++                              tunerunithdr->unitid);
++                      dprintk(DBGLVL_API, "  sourceid = 0x%x\n",
++                              tunerunithdr->sourceid);
++                      dprintk(DBGLVL_API, "  iunit = 0x%x\n",
++                              tunerunithdr->iunit);
++                      dprintk(DBGLVL_API, "  tuningstandards = 0x%x\n",
++                              tunerunithdr->tuningstandards);
++                      dprintk(DBGLVL_API, "  controlsize = 0x%x\n",
++                              tunerunithdr->controlsize);
++                      dprintk(DBGLVL_API, "  controls = 0x%x\n",
++                              tunerunithdr->controls);
++                      break;
++              case VC_SELECTOR_UNIT:
++                      dprintk(DBGLVL_API, " VC_SELECTOR_UNIT\n");
++                      break;
++              case VC_PROCESSING_UNIT:
++                      dprintk(DBGLVL_API, " VC_PROCESSING_UNIT\n");
++                      break;
++              case FEATURE_UNIT:
++                      dprintk(DBGLVL_API, " FEATURE_UNIT\n");
++                      break;
++              case ENCODER_UNIT:
++                      dprintk(DBGLVL_API, " ENCODER_UNIT\n");
++                      break;
++              case EXTENSION_UNIT:
++                      dprintk(DBGLVL_API, " EXTENSION_UNIT\n");
++                      exthdr = (tmComResExtDevDescrHeader_t *)(buf + idx);
++                      dprintk(DBGLVL_API, "  unitid = 0x%x\n",
++                              exthdr->unitid);
++                      dprintk(DBGLVL_API, "  deviceid = 0x%x\n",
++                              exthdr->deviceid);
++                      dprintk(DBGLVL_API, "  devicetype = 0x%x\n",
++                              exthdr->devicetype);
++                      if (exthdr->devicetype & 0x1)
++                              dprintk(DBGLVL_API, "   = Decoder Device\n");
++                      if (exthdr->devicetype & 0x2)
++                              dprintk(DBGLVL_API, "   = GPIO Source\n");
++                      if (exthdr->devicetype & 0x4)
++                              dprintk(DBGLVL_API, "   = Video Decoder\n");
++                      if (exthdr->devicetype & 0x8)
++                              dprintk(DBGLVL_API, "   = Audio Decoder\n");
++                      if (exthdr->devicetype & 0x20)
++                              dprintk(DBGLVL_API, "   = Crossbar\n");
++                      if (exthdr->devicetype & 0x40)
++                              dprintk(DBGLVL_API, "   = Tuner\n");
++                      if (exthdr->devicetype & 0x80)
++                              dprintk(DBGLVL_API, "   = IF PLL\n");
++                      if (exthdr->devicetype & 0x100)
++                              dprintk(DBGLVL_API, "   = Demodulator\n");
++                      if (exthdr->devicetype & 0x200)
++                              dprintk(DBGLVL_API, "   = RDS Decoder\n");
++                      if (exthdr->devicetype & 0x400)
++                              dprintk(DBGLVL_API, "   = Encoder\n");
++                      if (exthdr->devicetype & 0x800)
++                              dprintk(DBGLVL_API, "   = IR Decoder\n");
++                      if (exthdr->devicetype & 0x1000)
++                              dprintk(DBGLVL_API, "   = EEPROM\n");
++                      if (exthdr->devicetype & 0x2000)
++                              dprintk(DBGLVL_API,
++                                      "   = VBI Decoder\n");
++                      if (exthdr->devicetype & 0x10000)
++                              dprintk(DBGLVL_API,
++                                      "   = Streaming Device\n");
++                      if (exthdr->devicetype & 0x20000)
++                              dprintk(DBGLVL_API,
++                                      "   = DRM Device\n");
++                      if (exthdr->devicetype & 0x40000000)
++                              dprintk(DBGLVL_API,
++                                      "   = Generic Device\n");
++                      if (exthdr->devicetype & 0x80000000)
++                              dprintk(DBGLVL_API,
++                                      "   = Config Space Device\n");
++                      dprintk(DBGLVL_API, "  numgpiopins = 0x%x\n",
++                              exthdr->numgpiopins);
++                      dprintk(DBGLVL_API, "  numgpiogroups = 0x%x\n",
++                              exthdr->numgpiogroups);
++                      dprintk(DBGLVL_API, "  controlsize = 0x%x\n",
++                              exthdr->controlsize);
++                      break;
++              case PVC_INFRARED_UNIT:
++                      dprintk(DBGLVL_API, " PVC_INFRARED_UNIT\n");
++                      break;
++              case DRM_UNIT:
++                      dprintk(DBGLVL_API, " DRM_UNIT\n");
++                      break;
++              default:
++                      dprintk(DBGLVL_API, "default %d\n", hdr->subtype);
++              }
++
++              dprintk(DBGLVL_API, " 1.%x\n", hdr->len);
++              dprintk(DBGLVL_API, " 2.%x\n", hdr->type);
++              dprintk(DBGLVL_API, " 3.%x\n", hdr->subtype);
++              dprintk(DBGLVL_API, " 4.%x\n", hdr->unitid);
++
++              idx += hdr->len;
++      }
++
++      return 0;
++}
++
++int saa7164_api_enum_subdevs(struct saa7164_dev *dev)
++{
++      int ret;
++      u32 buflen = 0;
++      u8 *buf;
++
++      dprintk(DBGLVL_API, "%s()\n", __func__);
++
++      /* Get the total descriptor length */
++      ret = saa7164_cmd_send(dev, 0, GET_LEN,
++              GET_DESCRIPTORS_CONTROL, sizeof(buflen), &buflen);
++      if (ret != SAA_OK)
++              printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
++
++      dprintk(DBGLVL_API, "%s() total descriptor size = %d bytes.\n",
++              __func__, buflen);
++
++      /* Allocate enough storage for all of the descs */
++      buf = kzalloc(buflen, GFP_KERNEL);
++      if (buf == NULL)
++              return SAA_ERR_NO_RESOURCES;
++
++      /* Retrieve them */
++      ret = saa7164_cmd_send(dev, 0, GET_CUR,
++              GET_DESCRIPTORS_CONTROL, buflen, buf);
++      if (ret != SAA_OK) {
++              printk(KERN_ERR "%s() error, ret = 0x%x\n", __func__, ret);
++              goto out;
++      }
++
++      if (saa_debug & DBGLVL_API)
++              saa7164_dumphex16(dev, buf, (buflen/16)*16);
++
++      saa7164_api_dump_subdevs(dev, buf, buflen);
++
++out:
++      kfree(buf);
++      return ret;
++}
++
++int saa7164_api_i2c_read(struct saa7164_i2c *bus, u8 addr, u32 reglen, u8  
*reg,
++      u32 datalen, u8 *data)
++{
++      struct saa7164_dev *dev = bus->dev;
++      u16 len = 0;
++      int unitid;
++      u32 regval;
++      u8 buf[256];
++      int ret;
++
++      dprintk(DBGLVL_API, "%s()\n", __func__);
++
++      if (reglen > 4)
++              return -EIO;
++
++      if (reglen == 1)
++              regval = *(reg);
++      else
++      if (reglen == 2)
++              regval = ((*(reg) << 8) || *(reg+1));
++      else
++      if (reglen == 3)
++              regval = ((*(reg) << 16) | (*(reg+1) << 8) | *(reg+2));
++      else
++      if (reglen == 4)
++              regval = ((*(reg) << 24) | (*(reg+1) << 16) |
++                      (*(reg+2) << 8) | *(reg+3));
++
++      /* Prepare the send buffer */
++      /* Bytes 00-03 source register length
++       *       04-07 source bytes to read
++       *       08... register address
++       */
++      memset(buf, 0, sizeof(buf));
++      memcpy((buf + 2 * sizeof(u32) + 0), reg, reglen);
++      *((u32 *)(buf + 0 * sizeof(u32))) = reglen;
++      *((u32 *)(buf + 1 * sizeof(u32))) = datalen;
++
++      unitid = saa7164_i2caddr_to_unitid(bus, addr);
++      if (unitid < 0) {
++              printk(KERN_ERR
++                      "%s() error, cannot translate regaddr 0x%x to unitid\n",
++                      __func__, addr);
++              return -EIO;
++      }
++
++      ret = saa7164_cmd_send(bus->dev, unitid, GET_LEN,
++              EXU_REGISTER_ACCESS_CONTROL, sizeof(len), &len);
++      if (ret != SAA_OK) {
++              printk(KERN_ERR "%s() error, ret(1) = 0x%x\n", __func__, ret);
++              return -EIO;
++      }
++
++      dprintk(DBGLVL_API, "%s() len = %d bytes\n", __func__, len);
++
++      if (saa_debug & DBGLVL_I2C)
++              saa7164_dumphex16(dev, buf, 2 * 16);
++
++      ret = saa7164_cmd_send(bus->dev, unitid, GET_CUR,
++              EXU_REGISTER_ACCESS_CONTROL, len, &buf);
++      if (ret != SAA_OK)
++              printk(KERN_ERR "%s() error, ret(2) = 0x%x\n", __func__, ret);
++      else {
++              if (saa_debug & DBGLVL_I2C)
++                      saa7164_dumphex16(dev, buf, sizeof(buf));
++              memcpy(data, (buf + 2 * sizeof(u32) + reglen), datalen);
++      }
++
++      return ret == SAA_OK ? 0 : -EIO;
++}
++
++/* For a given 8 bit i2c address device, write the buffer */
++int saa7164_api_i2c_write(struct saa7164_i2c *bus, u8 addr, u32 datalen,
++      u8 *data)
++{
++      struct saa7164_dev *dev = bus->dev;
++      u16 len = 0;
++      int unitid;
++      int reglen;
++      u8 buf[256];
++      int ret;
++
++      dprintk(DBGLVL_API, "%s()\n", __func__);
++
++      if ((datalen == 0) || (datalen > 232))
++              return -EIO;
++
++      memset(buf, 0, sizeof(buf));
++
++      unitid = saa7164_i2caddr_to_unitid(bus, addr);
++      if (unitid < 0) {
++              printk(KERN_ERR
++                      "%s() error, cannot translate regaddr 0x%x to unitid\n",
++                      __func__, addr);
++              return -EIO;
++      }
++
++      reglen = saa7164_i2caddr_to_reglen(bus, addr);
++      if (unitid < 0) {
++              printk(KERN_ERR
++                      "%s() error, cannot translate regaddr to reglen\n",
++                      __func__);
++              return -EIO;
++      }
++
++      ret = saa7164_cmd_send(bus->dev, unitid, GET_LEN,
++              EXU_REGISTER_ACCESS_CONTROL, sizeof(len), &len);
++      if (ret != SAA_OK) {
++              printk(KERN_ERR "%s() error, ret(1) = 0x%x\n", __func__, ret);
++              return -EIO;
++      }
++
++      dprintk(DBGLVL_API, "%s() len = %d bytes\n", __func__, len);
++
++      /* Prepare the send buffer */
++      /* Bytes 00-03 dest register length
++       *       04-07 dest bytes to write
++       *       08... register address
++       */
++      *((u32 *)(buf + 0 * sizeof(u32))) = reglen;
++      *((u32 *)(buf + 1 * sizeof(u32))) = datalen - reglen;
++      memcpy((buf + 2 * sizeof(u32)), data, datalen);
++
++      if (saa_debug & DBGLVL_I2C)
++              saa7164_dumphex16(dev, buf, sizeof(buf));
++
++      ret = saa7164_cmd_send(bus->dev, unitid, SET_CUR,
++              EXU_REGISTER_ACCESS_CONTROL, len, &buf);
++      if (ret != SAA_OK)
++              printk(KERN_ERR "%s() error, ret(2) = 0x%x\n", __func__, ret);
++
++      return ret == SAA_OK ? 0 : -EIO;
++}
++
++
++int saa7164_api_modify_gpio(struct saa7164_dev *dev, u8 unitid,
++      u8 pin, u8 state)
++{
++      int ret;
++      tmComResGPIO_t t;
++
++      dprintk(DBGLVL_API, "%s(0x%x, %d, %d)\n",
++              __func__, unitid, pin, state);
++
++      if ((pin > 7) || (state > 2))
++              return SAA_ERR_BAD_PARAMETER;
++
++      t.pin = pin;
++      t.state = state;
++
++      ret = saa7164_cmd_send(dev, unitid, SET_CUR,
++              EXU_GPIO_CONTROL, sizeof(t), &t);
++      if (ret != SAA_OK)
++              printk(KERN_ERR "%s() error, ret = 0x%x\n",
++                      __func__, ret);
++
++      return ret;
++}
++
++int saa7164_api_set_gpiobit(struct saa7164_dev *dev, u8 unitid,
++      u8 pin)
++{
++      return saa7164_api_modify_gpio(dev, unitid, pin, 1);
++}
++
++int saa7164_api_clear_gpiobit(struct saa7164_dev *dev, u8 unitid,
++      u8 pin)
++{
++      return saa7164_api_modify_gpio(dev, unitid, pin, 0);
++}
++
++
++
+diff -Naur linux-2.6.31.5-old/drivers/media/video/saa7164/saa7164-buffer.c  
linux-2.6.31.5-new/drivers/media/video/saa7164/saa7164-buffer.c
+--- linux-2.6.31.5-old/drivers/media/video/saa7164/saa7164-buffer.c     
1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.31.5-new/drivers/media/video/saa7164/saa7164-buffer.c     
2009-10-15 17:41:50.000000000 -0700
+@@ -0,0 +1,155 @@
++/*
++ *  Driver for the NXP SAA7164 PCIe bridge
++ *
++ *  Copyright (c) 2009 Steven Toth <[email protected]>
++ *
++ *  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
++ *  the Free Software Foundation; either version 2 of the License, or
++ *  (at your option) any later version.
++ *
++ *  This program is distributed in the hope that it will be useful,
++ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *
++ *  GNU General Public License for more details.
++ *
++ *  You should have received a copy of the GNU General Public License
++ *  along with this program; if not, write to the Free Software
++ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include "saa7164.h"
++
++/* The PCI address space for buffer handling looks like this:
++
++ +-u32 wide-------------+
++ |                      +
++ +-u64 wide------------------------------------+
++ +                                             +
++ +----------------------+
++ | CurrentBufferPtr     + Pointer to current PCI buffer >-+
++ +----------------------+                                 |
++ | Unused               +                                 |
++ +----------------------+                                 |
++ | Pitch                + = 188 (bytes)                   |
++ +----------------------+                                 |
++ | PCI buffer size      + = pitch * number of lines (312) |
++ +----------------------+                                 |
++ |0| Buf0 Write Offset  +                                 |
++ +----------------------+                                 v
++ |1| Buf1 Write Offset  +                                 |
++ +----------------------+                                 |
++ |2| Buf2 Write Offset  +                                 |
++ +----------------------+                                 |
++ |3| Buf3 Write Offset  +                                 |
++ +----------------------+                                 |
++ ... More write offsets                                   |
++ +---------------------------------------------+          |
++ +0| set of ptrs to PCI pagetables             +          |
++ +---------------------------------------------+          |
++ +1| set of ptrs to PCI pagetables             + <--------+
++ +---------------------------------------------+
++ +2| set of ptrs to PCI pagetables             +
++ +---------------------------------------------+
++ +3| set of ptrs to PCI pagetables             + >--+
++ +---------------------------------------------+    |
++ ... More buffer pointers                           |  +----------------+
++                                                  +->| pt[0] TS data  |
++                                                  |  +----------------+
++                                                  |
++                                                  |  +----------------+
++                                                  +->| pt[1] TS data  |
++                                                  |  +----------------+
++                                                  | etc
++ */
++
++/* Allocate a new buffer structure and associated PCI space in bytes.
++ * len must be a multiple of sizeof(u64)
++ */
++struct saa7164_buffer *saa7164_buffer_alloc(struct saa7164_tsport *port,
++      u32 len)
++{
++      struct saa7164_buffer *buf = 0;
++      struct saa7164_dev *dev = port->dev;
++      int i;
++
++      if ((len == 0) || (len >= 65536) || (len % sizeof(u64))) {
++              log_warn("%s() SAA_ERR_BAD_PARAMETER\n", __func__);
++              goto ret;
++      }
++
++      buf = kzalloc(sizeof(struct saa7164_buffer), GFP_KERNEL);
++      if (buf == NULL) {
++              log_warn("%s() SAA_ERR_NO_RESOURCES\n", __func__);
++              goto ret;
++      }
++
++      buf->port = port;
++      buf->flags = SAA7164_BUFFER_FREE;
++      /* TODO: arg len is being ignored */
++      buf->pci_size = SAA7164_PT_ENTRIES * 0x1000;
++      buf->pt_size = (SAA7164_PT_ENTRIES * sizeof(u64)) + 0x1000;
++
++      /* Allocate contiguous memory */
++      buf->cpu = pci_alloc_consistent(port->dev->pci, buf->pci_size,
++              &buf->dma);
++      if (!buf->cpu)
++              goto fail1;
++
++      buf->pt_cpu = pci_alloc_consistent(port->dev->pci, buf->pt_size,
++              &buf->pt_dma);
++      if (!buf->pt_cpu)
++              goto fail2;
++
++      /* init the buffers to a known pattern, easier during debugging */
++      memset(buf->cpu, 0xff, buf->pci_size);
++      memset(buf->pt_cpu, 0xff, buf->pt_size);
++
++      dprintk(DBGLVL_BUF, "%s()   allocated buffer @ 0x%p\n", __func__, buf);
++      dprintk(DBGLVL_BUF, "  pci_cpu @ 0x%p    dma @ 0x%08lx len = 0x%x\n",
++              buf->cpu, (long)buf->dma, buf->pci_size);
++      dprintk(DBGLVL_BUF, "   pt_cpu @ 0x%p pt_dma @ 0x%08lx len = 0x%x\n",
++              buf->pt_cpu, (long)buf->pt_dma, buf->pt_size);
++
++      /* Format the Page Table Entries to point into the data buffer */
++      for (i = 0 ; i < SAA7164_PT_ENTRIES; i++) {
++
++              *(buf->pt_cpu + i) = buf->dma + (i * 0x1000); /* TODO */
++
++      }
++
++      goto ret;
++
++fail2:
++      pci_free_consistent(port->dev->pci, buf->pci_size, buf->cpu, buf->dma);
++fail1:
++      kfree(buf);
++
++      buf = 0;
++ret:
++      return buf;
++}
++
++int saa7164_buffer_dealloc(struct saa7164_tsport *port,
++      struct saa7164_buffer *buf)
++{
++      struct saa7164_dev *dev = port->dev;
++
++      if ((buf == 0) || (port == 0))
++              return SAA_ERR_BAD_PARAMETER;
++
++      dprintk(DBGLVL_BUF, "%s() deallocating buffer @ 0x%p\n", __func__, buf);
++
++      if (buf->flags != SAA7164_BUFFER_FREE)
++              log_warn(" freeing a non-free buffer\n");
++
++      pci_free_consistent(port->dev->pci, buf->pci_size, buf->cpu, buf->dma);
++      pci_free_consistent(port->dev->pci, buf->pt_size, buf->pt_cpu,
++              buf->pt_dma);
++
++      kfree(buf);
++
++      return SAA_OK;
++}
++
+diff -Naur linux-2.6.31.5-old/drivers/media/video/saa7164/saa7164-bus.c  
linux-2.6.31.5-new/drivers/media/video/saa7164/saa7164-bus.c
+--- linux-2.6.31.5-old/drivers/media/video/saa7164/saa7164-bus.c        
1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.31.5-new/drivers/media/video/saa7164/saa7164-bus.c        
2009-10-15 17:41:50.000000000 -0700
+@@ -0,0 +1,448 @@
++/*
++ *  Driver for the NXP SAA7164 PCIe bridge
++ *
++ *  Copyright (c) 2009 Steven Toth <[email protected]>
++ *
++ *  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
++ *  the Free Software Foundation; either version 2 of the License, or
++ *  (at your option) any later version.
++ *
++ *  This program is distributed in the hope that it will be useful,
++ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *
++ *  GNU General Public License for more details.
++ *
++ *  You should have received a copy of the GNU General Public License
++ *  along with this program; if not, write to the Free Software
++ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include "saa7164.h"
++
++/* The message bus to/from the firmware is a ring buffer in PCI address
++ * space. Establish the defaults.
++ */
++int saa7164_bus_setup(struct saa7164_dev *dev)
++{
++      tmComResBusInfo_t *b    = &dev->bus;
++
++      mutex_init(&b->lock);
++
++      b->Type                 = TYPE_BUS_PCIe;
++      b->m_wMaxReqSize        = SAA_DEVICE_MAXREQUESTSIZE;
++
++      b->m_pdwSetRing         = (u8 *)(dev->bmmio +
++              ((u32)dev->busdesc.CommandRing));
++
++      b->m_dwSizeSetRing      = SAA_DEVICE_BUFFERBLOCKSIZE;
++
++      b->m_pdwGetRing         = (u8 *)(dev->bmmio +
++              ((u32)dev->busdesc.ResponseRing));
++
++      b->m_dwSizeGetRing      = SAA_DEVICE_BUFFERBLOCKSIZE;
++
++      b->m_pdwSetWritePos     = (u32 *)((u8 *)(dev->bmmio +
++              ((u32)dev->intfdesc.BARLocation) + (2 * sizeof(u64))));
++
++      b->m_pdwSetReadPos      = (u32 *)((u8 *)b->m_pdwSetWritePos +
++              1 * sizeof(u32));
++
++      b->m_pdwGetWritePos     = (u32 *)((u8 *)b->m_pdwSetWritePos +
++              2 * sizeof(u32));
++
++      b->m_pdwGetReadPos      = (u32 *)((u8 *)b->m_pdwSetWritePos +
++              3 * sizeof(u32));
++
++      return 0;
++}
++
++void saa7164_bus_dump(struct saa7164_dev *dev)
++{
++      tmComResBusInfo_t *b = &dev->bus;
++
++      dprintk(DBGLVL_BUS, "Dumping the bus structure:\n");
++      dprintk(DBGLVL_BUS, " .type             = %d\n", b->Type);
++      dprintk(DBGLVL_BUS, " .dev->bmmio       = 0x%p\n", dev->bmmio);
++      dprintk(DBGLVL_BUS, " .m_wMaxReqSize    = 0x%x\n", b->m_wMaxReqSize);
++      dprintk(DBGLVL_BUS, " .m_pdwSetRing     = 0x%p\n", b->m_pdwSetRing);
++      dprintk(DBGLVL_BUS, " .m_dwSizeSetRing  = 0x%x\n", b->m_dwSizeSetRing);
++      dprintk(DBGLVL_BUS, " .m_pdwGetRing     = 0x%p\n", b->m_pdwGetRing);
++      dprintk(DBGLVL_BUS, " .m_dwSizeGetRing  = 0x%x\n", b->m_dwSizeGetRing);
++
++      dprintk(DBGLVL_BUS, " .m_pdwSetWritePos = 0x%p (0x%08x)\n",
++              b->m_pdwSetWritePos, *b->m_pdwSetWritePos);
++
++      dprintk(DBGLVL_BUS, " .m_pdwSetReadPos  = 0x%p (0x%08x)\n",
++              b->m_pdwSetReadPos, *b->m_pdwSetReadPos);
++
++      dprintk(DBGLVL_BUS, " .m_pdwGetWritePos = 0x%p (0x%08x)\n",
++              b->m_pdwGetWritePos, *b->m_pdwGetWritePos);
++
++      dprintk(DBGLVL_BUS, " .m_pdwGetReadPos  = 0x%p (0x%08x)\n",
++              b->m_pdwGetReadPos, *b->m_pdwGetReadPos);
++}
++
++void saa7164_bus_dumpmsg(struct saa7164_dev *dev, tmComResInfo_t* m, void  
*buf)
++{
++      dprintk(DBGLVL_BUS, "Dumping msg structure:\n");
++      dprintk(DBGLVL_BUS, " .id               = %d\n",   m->id);
++      dprintk(DBGLVL_BUS, " .flags            = 0x%x\n", m->flags);
++      dprintk(DBGLVL_BUS, " .size             = 0x%x\n", m->size);
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/gar-minimyth/html/minimyth/document-changelog.txt    Fri Oct 30  
14:11:16 2009
+++ /trunk/gar-minimyth/html/minimyth/document-changelog.txt    Sat Oct 31  
07:26:41 2009
@@ -5,7 +5,7 @@
  MiniMyth release. For earlier changes see the yearly changelog files.

   
--------------------------------------------------------------------------------
-Changes since 70 (2009-10-30):
+Changes since 70 (2009-10-31):

  Current MythTV versions
      MythTV 0.20-softpad: version 0.20.2.softpad, release-0-20-fixes branch  
svn 16082 and
@@ -32,6 +32,10 @@
        linked to libXff86misc and it is not included in X11R7.5 (but is  
still
        available).

+Modified kernel
+    - Added Hauppauge WinTV-HVR2200 and WinTV-HVR2250 related kernel  
drivers
+      (e.g. saa7164).
+
  Fixed bugs
      - Fixed bug that caused boot to fail when huludesktop.data is not  
present
        in the MiniMyth read-write configuration directory.
=======================================
--- /trunk/gar-minimyth/html/minimyth/document-hardware.html    Tue Sep 15  
14:50:25 2009
+++ /trunk/gar-minimyth/html/minimyth/document-hardware.html    Sat Oct 31  
07:26:41 2009
@@ -161,6 +161,7 @@
                  <li>cx8802</li>
                  <li>dvb-usb-dib0700</li>
                  <li>ivtv</li>
+                <li>saa7164</li>
                </ul>
              </dd>
              <dt id="driver-xorg-video"><strong>Xorg Video Hardware  
Drivers</strong></dt>
@@ -438,7 +439,7 @@
                alt="Valid CSS!"      height="31" width="88" /></a>
          </div>
          <div class="version">
-          Last Updated on 2009-09-15
+          Last Updated on 2009-10-31
            <br />
             
&lt;&nbsp;mailto&nbsp;:&nbsp;webmaster&nbsp;at&nbsp;minimyth&nbsp;dot&nbsp;org&nbsp;&gt;
          </div>
=======================================
--- /trunk/gar-minimyth/script/kernel-2.6.31/linux/Makefile     Mon Sep 28  
17:58:54 2009
+++ /trunk/gar-minimyth/script/kernel-2.6.31/linux/Makefile     Sat Oct 31  
07:26:41 2009
@@ -7,6 +7,7 @@
  DISTFILES = $(DISTNAME).tar.bz2 $(CONFIGFILE)
  PATCHFILES  = $(DISTNAME).patch.gar
  PATCHFILES += $(DISTNAME)-perl.patch.gar
+PATCHFILES += $(DISTNAME)-saa7164.patch
  PATCHFILES += $(DISTNAME)-intel_atom.patch
  PATCHFILES += $(DISTNAME)-bttv_lirc.patch
  PATCHFILES += $(DISTNAME)-unionfs_2.5.3.patch
=======================================
--- /trunk/gar-minimyth/script/kernel-2.6.31/linux/checksums    Thu Oct 22  
19:35:03 2009
+++ /trunk/gar-minimyth/script/kernel-2.6.31/linux/checksums    Sat Oct 31  
07:26:41 2009
@@ -1,12 +1,13 @@
  926bff46d24e2f303e4ee92234e394d8  download/linux-2.6.31.5.tar.bz2
  31098d91dc15c07a9526bd2f6c347bef  download/linux-2.6.31.5.patch.gar
  8ffc444f2a635868380e55a2714d6e0f  download/linux-2.6.31.5-perl.patch.gar
+c5a1bc9c7b1226d6ab8098971c8198bd  download/linux-2.6.31.5-saa7164.patch
  5ff44d89c6d84935cd18e50d75597cda  download/linux-2.6.31.5-intel_atom.patch
  959a5c5a7cf94e9f5015ff1a8ae88c0f  download/linux-2.6.31.5-bttv_lirc.patch
  cbd4806d46552ff4daf2d3af283f5919   
download/linux-2.6.31.5-unionfs_2.5.3.patch
  6e5cff9c94dbe3cb23ac2605cd70e648   
download/linux-2.6.31.5-disable_dma_for_cfa.patch
  e78c8e28d8228cecda3ec0223fbc7f18  download/linux-2.6.31.5-defaults.patch
-c02710f3cc83de31d7d950f6ed12fd26  download/linux-2.6.31.5-i386-c3.config
-191a9ff750e09f8f68cde7c062457316  download/linux-2.6.31.5-i386-c3-2.config
-114da19f1ef55f780aadfe7c04d39261   
download/linux-2.6.31.5-i386-pentium-mmx.config
-478126ad56ad102393570917cc7c67c0   
download/linux-2.6.31.5-x86_64-x86-64.config
+1da4d6cde1c21bd48c81f988c87dbfbf  download/linux-2.6.31.5-i386-c3.config
+57ddf0fedb634a0a95bff0061d9e2726  download/linux-2.6.31.5-i386-c3-2.config
+8b7b01dab75f80de690cb69cd905942f   
download/linux-2.6.31.5-i386-pentium-mmx.config
+eb97db539e79aae515066ef8ca7c2135   
download/linux-2.6.31.5-x86_64-x86-64.config
=======================================
---  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-c3-2.config
     
Thu Oct 22 19:35:03 2009
+++  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-c3-2.config
     
Sat Oct 31 07:26:41 2009
@@ -1,7 +1,7 @@
  #
  # Automatically generated make config: don't edit
  # Linux kernel version: 2.6.31.5
-# Thu Oct 22 19:11:50 2009
+# Sat Oct 31 07:17:36 2009
  #
  # CONFIG_64BIT is not set
  CONFIG_X86_32=y
@@ -1325,6 +1325,7 @@
  CONFIG_MEDIA_TUNER_SIMPLE=m
  CONFIG_MEDIA_TUNER_TDA8290=m
  CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
  CONFIG_MEDIA_TUNER_TDA9887=m
  CONFIG_MEDIA_TUNER_TEA5761=m
  CONFIG_MEDIA_TUNER_TEA5767=m
@@ -1394,6 +1395,7 @@
  CONFIG_VIDEO_IVTV=m
  # CONFIG_VIDEO_FB_IVTV is not set
  CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
  # CONFIG_VIDEO_CAFE_CCIC is not set
  # CONFIG_SOC_CAMERA is not set
  CONFIG_V4L_USB_DRIVERS=y
@@ -1551,6 +1553,7 @@
  CONFIG_DVB_DIB3000MC=m
  CONFIG_DVB_DIB7000M=m
  CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
  CONFIG_DVB_VES1820=m
  CONFIG_DVB_TDA10021=m
  CONFIG_DVB_TDA10023=m
=======================================
---  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-c3.config
       
Thu Oct 22 19:35:03 2009
+++  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-c3.config
       
Sat Oct 31 07:26:41 2009
@@ -1,7 +1,7 @@
  #
  # Automatically generated make config: don't edit
  # Linux kernel version: 2.6.31.5
-# Thu Oct 22 19:11:31 2009
+# Sat Oct 31 07:17:24 2009
  #
  # CONFIG_64BIT is not set
  CONFIG_X86_32=y
@@ -1323,6 +1323,7 @@
  CONFIG_MEDIA_TUNER_SIMPLE=m
  CONFIG_MEDIA_TUNER_TDA8290=m
  CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
  CONFIG_MEDIA_TUNER_TDA9887=m
  CONFIG_MEDIA_TUNER_TEA5761=m
  CONFIG_MEDIA_TUNER_TEA5767=m
@@ -1392,6 +1393,7 @@
  CONFIG_VIDEO_IVTV=m
  # CONFIG_VIDEO_FB_IVTV is not set
  CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
  # CONFIG_VIDEO_CAFE_CCIC is not set
  # CONFIG_SOC_CAMERA is not set
  CONFIG_V4L_USB_DRIVERS=y
@@ -1549,6 +1551,7 @@
  CONFIG_DVB_DIB3000MC=m
  CONFIG_DVB_DIB7000M=m
  CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
  CONFIG_DVB_VES1820=m
  CONFIG_DVB_TDA10021=m
  CONFIG_DVB_TDA10023=m
=======================================
---  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-pentium-mmx.config
      
Thu Oct 22 19:35:03 2009
+++  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-i386-pentium-mmx.config
      
Sat Oct 31 07:26:41 2009
@@ -1,7 +1,7 @@
  #
  # Automatically generated make config: don't edit
  # Linux kernel version: 2.6.31.5
-# Thu Oct 22 19:10:40 2009
+# Sat Oct 31 07:16:42 2009
  #
  # CONFIG_64BIT is not set
  CONFIG_X86_32=y
@@ -1324,6 +1324,7 @@
  CONFIG_MEDIA_TUNER_SIMPLE=m
  CONFIG_MEDIA_TUNER_TDA8290=m
  CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
  CONFIG_MEDIA_TUNER_TDA9887=m
  CONFIG_MEDIA_TUNER_TEA5761=m
  CONFIG_MEDIA_TUNER_TEA5767=m
@@ -1393,6 +1394,7 @@
  CONFIG_VIDEO_IVTV=m
  # CONFIG_VIDEO_FB_IVTV is not set
  CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
  # CONFIG_VIDEO_CAFE_CCIC is not set
  # CONFIG_SOC_CAMERA is not set
  CONFIG_V4L_USB_DRIVERS=y
@@ -1550,6 +1552,7 @@
  CONFIG_DVB_DIB3000MC=m
  CONFIG_DVB_DIB7000M=m
  CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
  CONFIG_DVB_VES1820=m
  CONFIG_DVB_TDA10021=m
  CONFIG_DVB_TDA10023=m
=======================================
---  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-x86_64-x86-64.config
         
Thu Oct 22 19:35:03 2009
+++  
/trunk/gar-minimyth/script/kernel-2.6.31/linux/files/linux-2.6.31.5-x86_64-x86-64.config
         
Sat Oct 31 07:26:41 2009
@@ -1,7 +1,7 @@
  #
  # Automatically generated make config: don't edit
  # Linux kernel version: 2.6.31.5
-# Thu Oct 22 19:12:15 2009
+# Sat Oct 31 07:17:54 2009
  #
  CONFIG_64BIT=y
  # CONFIG_X86_32 is not set
@@ -1259,6 +1259,7 @@
  CONFIG_MEDIA_TUNER_SIMPLE=m
  CONFIG_MEDIA_TUNER_TDA8290=m
  CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
  CONFIG_MEDIA_TUNER_TDA9887=m
  CONFIG_MEDIA_TUNER_TEA5761=m
  CONFIG_MEDIA_TUNER_TEA5767=m
@@ -1327,6 +1328,7 @@
  CONFIG_VIDEO_IVTV=m
  # CONFIG_VIDEO_FB_IVTV is not set
  CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_SAA7164=m
  # CONFIG_VIDEO_CAFE_CCIC is not set
  # CONFIG_SOC_CAMERA is not set
  CONFIG_V4L_USB_DRIVERS=y
@@ -1484,6 +1486,7 @@
  CONFIG_DVB_DIB3000MC=m
  CONFIG_DVB_DIB7000M=m
  CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
  CONFIG_DVB_VES1820=m
  CONFIG_DVB_TDA10021=m
  CONFIG_DVB_TDA10023=m
=======================================
---  
/trunk/gar-minimyth/script/meta/minimyth/files/source/lists/software/minimyth-lib-list.backend
   
Mon Sep 28 09:06:55 2009
+++  
/trunk/gar-minimyth/script/meta/minimyth/files/source/lists/software/minimyth-lib-list.backend
   
Sat Oct 31 07:26:41 2009
@@ -15,6 +15,7 @@
  modules/*/kernel/drivers/media/video/ivtv/ivtv.ko
  modules/*/kernel/drivers/media/video/msp3400.ko
  modules/*/kernel/drivers/media/video/saa7115.ko
+modules/*/kernel/drivers/media/video/saa7164/saa7164.ko
  modules/*/kernel/drivers/media/video/tuner.ko
  modules/*/kernel/drivers/media/video/tvaudio.ko
  modules/*/misc/lirc/lirc_gpio.ko

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"minimyth-commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/minimyth-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to