]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge /home/v4l/v4l/for_upstream
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 26 Nov 2011 14:59:42 +0000 (12:59 -0200)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 26 Nov 2011 14:59:42 +0000 (12:59 -0200)
* /home/v4l/v4l/for_upstream:
  [media] media: video: s5p-tv: fix build break
  [media] omap3isp: fix compilation of ispvideo.c
  [media] m5mols: Fix set_fmt to return proper pixel format code
  [media] s5p-fimc: Use correct fourcc for RGB565 colour format
  [media] s5p-fimc: Fail driver probing when sensor configuration is wrong
  [media] s5p-fimc: Adjust pixel height alignments according to the IP revision
  [media] s5p-fimc: Allow probe() to succeed with null platform data
  [media] s5p-fimc: Fix buffer dequeue order issue
  [media] s5p-fimc: Fix initialization for proper system suspend support
  [media] s5p-fimc: Fix error in the capture subdev deinitialization
  [media] s5p-fimc: Fix wrong pointer dereference when unregistering sensors
  [media] media/staging: fix allyesconfig build error
  MAINTAINERS: Update media entries
  [media] mxl5007t: fix reg read
  [media] tda18218: fix 6 MHz default IF frequency
  [media] af9015: limit I2C access to keep FW happy

Conflicts:
drivers/media/common/tuners/tda18218.c
drivers/staging/media/as102/as102_drv.h

1  2 
MAINTAINERS
drivers/media/common/tuners/mxl5007t.c
drivers/media/common/tuners/tda18218.c
drivers/media/video/m5mols/m5mols_core.c
drivers/staging/media/as102/as102_drv.c
drivers/staging/media/as102/as102_drv.h

diff --combined MAINTAINERS
index 879b02ceebcf8404308645004aba81439e00f6db,273b0498e71534ace4a4683e435ef55356a2311e..a1300e6e76caca722d68b651bb2d24bd332d6108
@@@ -316,10 -316,6 +316,10 @@@ W:       http://wiki.analog.com/AD787
  S:    Supported
  F:    drivers/input/touchscreen/ad7879.c
  
 +ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR)
 +M:    Jiri Kosina <jkosina@suse.cz>
 +S:    Maintained
 +
  ADM1025 HARDWARE MONITOR DRIVER
  M:    Jean Delvare <khali@linux-fr.org>
  L:    lm-sensors@lm-sensors.org
@@@ -692,12 -688,6 +692,12 @@@ F:       drivers/mtd/nand/bcm_umi_nand.
  F:    drivers/mtd/nand/bcm_umi_bch.c
  F:    drivers/mtd/nand/nand_bcm_umi.h
  
 +ARM/CALXEDA HIGHBANK ARCHITECTURE
 +M:    Rob Herring <rob.herring@calxeda.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/mach-highbank/
 +
  ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
  M:    Anton Vorontsov <avorontsov@mvista.com>
  S:    Maintained
@@@ -797,13 -787,6 +797,13 @@@ L:       linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-mx5/
  
 +ARM/FREESCALE IMX6
 +M:    Shawn Guo <shawn.guo@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://git.linaro.org/people/shawnguo/linux-2.6.git
 +F:    arch/arm/mach-imx/*imx6*
 +
  ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1032,7 -1015,6 +1032,7 @@@ F:      arch/arm/include/asm/hardware/ioc.
  F:    arch/arm/include/asm/hardware/iomd.h
  F:    arch/arm/include/asm/hardware/memc.h
  F:    arch/arm/mach-rpc/
 +F:    drivers/net/ethernet/8390/etherh.c
  F:    drivers/net/ethernet/i825xx/ether1*
  F:    drivers/net/ethernet/seeq/ether3*
  F:    drivers/scsi/arm/
@@@ -1718,7 -1700,6 +1718,7 @@@ F:      include/linux/can.
  F:    include/linux/can/core.h
  F:    include/linux/can/bcm.h
  F:    include/linux/can/raw.h
 +F:    include/linux/can/gw.h
  
  CAN NETWORK DRIVERS
  M:    Wolfgang Grandegger <wg@grandegger.com>
@@@ -2343,13 -2324,6 +2343,13 @@@ S:    Supporte
  F:    drivers/gpu/drm/i915
  F:    include/drm/i915*
  
 +DRM DRIVERS FOR EXYNOS
 +M:    Inki Dae <inki.dae@samsung.com>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Supported
 +F:    drivers/gpu/drm/exynos
 +F:    include/drm/exynos*
 +
  DSCC4 DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -2396,7 -2370,7 +2396,7 @@@ F:      include/linux/netfilter_bridge/ebt_*
  F:    net/bridge/netfilter/ebt*.c
  
  ECRYPT FILE SYSTEM
 -M:    Tyler Hicks <tyhicks@linux.vnet.ibm.com>
 +M:    Tyler Hicks <tyhicks@canonical.com>
  M:    Dustin Kirkland <kirkland@canonical.com>
  L:    ecryptfs@vger.kernel.org
  W:    https://launchpad.net/ecryptfs
@@@ -2477,6 -2451,8 +2477,6 @@@ L:      linux-edac@vger.kernel.or
  W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7core_edac.c
 -F:    drivers/edac/edac_mce.c
 -F:    include/linux/edac_mce.h
  
  EDAC-I82975X
  M:    Ranganathan Desikan <ravi@jetztechnologies.com>
@@@ -2500,13 -2476,6 +2500,13 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/r82600_edac.c
  
 +EDAC-SBRIDGE
 +M:    Mauro Carvalho Chehab <mchehab@redhat.com>
 +L:    linux-edac@vger.kernel.org
 +W:    bluesmoke.sourceforge.net
 +S:    Maintained
 +F:    drivers/edac/sb_edac.c
 +
  EDIROL UA-101/UA-1000 DRIVER
  M:    Clemens Ladisch <clemens@ladisch.de>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -2836,14 -2805,6 +2836,14 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/fujitsu-laptop.c
  
 +FUJITSU M-5MO LS CAMERA ISP DRIVER
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +M:    Heungjun Kim <riverful.kim@samsung.com>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/video/m5mols/
 +F:    include/media/m5mols.h
 +
  FUSE: FILESYSTEM IN USERSPACE
  M:    Miklos Szeredi <miklos@szeredi.hu>
  L:    fuse-devel@lists.sourceforge.net
@@@ -3036,13 -2997,6 +3036,13 @@@ F:    Documentation/hw_random.tx
  F:    drivers/char/hw_random/
  F:    include/linux/hw_random.h
  
 +HARDWARE SPINLOCK CORE
 +M:    Ohad Ben-Cohen <ohad@wizery.com>
 +S:    Maintained
 +F:    Documentation/hwspinlock.txt
 +F:    drivers/hwspinlock/hwspinlock_*
 +F:    include/linux/hwspinlock.h
 +
  HARMONY SOUND DRIVER
  M:    Kyle McMartin <kyle@mcmartin.ca>
  L:    linux-parisc@vger.kernel.org
@@@ -3235,7 -3189,8 +3235,7 @@@ IA64 (Itanium) PLATFOR
  M:    Tony Luck <tony.luck@intel.com>
  M:    Fenghua Yu <fenghua.yu@intel.com>
  L:    linux-ia64@vger.kernel.org
 -W:    http://www.ia64-linux.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git
  S:    Maintained
  F:    arch/ia64/
  
@@@ -3273,13 -3228,6 +3273,13 @@@ F:    Documentation/ide
  F:    drivers/ide/
  F:    include/linux/ide.h
  
 +IDEAPAD LAPTOP EXTRAS DRIVER
 +M:    Ike Panhc <ike.pan@canonical.com>
 +L:    platform-driver-x86@vger.kernel.org
 +W:    http://launchpad.net/ideapad-laptop
 +S:    Maintained
 +F:    drivers/platform/x86/ideapad-laptop.c
 +
  IDE/ATAPI DRIVERS
  M:    Borislav Petkov <petkovbb@gmail.com>
  L:    linux-ide@vger.kernel.org
@@@ -4066,7 -4014,6 +4066,7 @@@ M:      Eric Piel <eric.piel@tremplin-utc.ne
  S:    Maintained
  F:    Documentation/misc-devices/lis3lv02d
  F:    drivers/misc/lis3lv02d/
 +F:    drivers/platform/x86/hp_accel.c
  
  LLC (802.2)
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
@@@ -4287,7 -4234,9 +4287,9 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/dvb/
  F:    Documentation/video4linux/
+ F:    Documentation/DocBook/media/
  F:    drivers/media/
+ F:    drivers/staging/media/
  F:    include/media/
  F:    include/linux/dvb/
  F:    include/linux/videodev*.h
@@@ -4494,9 -4443,11 +4496,9 @@@ F:     Documentation/networking/vxge.tx
  F:    drivers/net/ethernet/neterion/
  
  NETFILTER/IPTABLES/IPCHAINS
 -P:    Rusty Russell
 -P:    Marc Boucher
 -P:    James Morris
  P:    Harald Welte
  P:    Jozsef Kadlecsik
 +M:    Pablo Neira Ayuso <pablo@netfilter.org>
  M:    Patrick McHardy <kaber@trash.net>
  L:    netfilter-devel@vger.kernel.org
  L:    netfilter@vger.kernel.org
@@@ -4689,7 -4640,7 +4691,7 @@@ L:      linux-omap@vger.kernel.or
  W:    http://www.muru.com/linux/omap/
  W:    http://linux.omap.com/
  Q:    http://patchwork.kernel.org/project/linux-omap/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
  S:    Maintained
  F:    arch/arm/*omap*/
  
@@@ -4737,13 -4688,6 +4739,13 @@@ S:    Maintaine
  F:    drivers/video/omap2/
  F:    Documentation/arm/OMAP/DSS
  
 +OMAP HARDWARE SPINLOCK SUPPORT
 +M:    Ohad Ben-Cohen <ohad@wizery.com>
 +L:    linux-omap@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hwspinlock/omap_hwspinlock.c
 +F:    arch/arm/mach-omap2/hwspinlock.c
 +
  OMAP MMC SUPPORT
  M:    Jarkko Lavinen <jarkko.lavinen@nokia.com>
  L:    linux-omap@vger.kernel.org
@@@ -5026,7 -4970,7 +5028,7 @@@ F:      include/linux/i2c-algo-pca.
  F:    include/linux/i2c-pca-platform.h
  
  PCI ERROR RECOVERY
 -M:    Linas Vepstas <linas@austin.ibm.com>
 +M:     Linas Vepstas <linasvepstas@gmail.com>
  L:    linux-pci@vger.kernel.org
  S:    Supported
  F:    Documentation/PCI/pci-error-recovery.txt
@@@ -5406,12 -5350,6 +5408,12 @@@ F:    fs/qnx4
  F:    include/linux/qnx4_fs.h
  F:    include/linux/qnxtypes.h
  
 +QUALCOMM HEXAGON ARCHITECTURE
 +M:    Richard Kuo <rkuo@codeaurora.org>
 +L:    linux-hexagon@vger.kernel.org
 +S:    Supported
 +F:    arch/hexagon/
 +
  RADOS BLOCK DEVICE (RBD)
  F:    include/linux/qnxtypes.h
  M:    Yehuda Sadeh <yehuda@hq.newdream.net>
@@@ -5487,7 -5425,7 +5489,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/rdc/r6040.c
  
  RDS - RELIABLE DATAGRAM SOCKETS
 -M:    Andy Grover <andy.grover@oracle.com>
 +M:    Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
  L:    rds-devel@oss.oracle.com (moderated for non-subscribers)
  S:    Supported
  F:    net/rds/
@@@ -6138,7 -6076,7 +6140,7 @@@ F:      sound
  SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
  M:    Liam Girdwood <lrg@ti.com>
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://alsa-project.org/main/index.php/ASoC
  S:    Supported
@@@ -6717,6 -6655,7 +6719,6 @@@ F:      drivers/net/ethernet/8390/ne-h8300.
  
  UDF FILESYSTEM
  M:    Jan Kara <jack@suse.cz>
 -W:    http://linux-udf.sourceforge.net
  S:    Maintained
  F:    Documentation/filesystems/udf.txt
  F:    fs/udf/
index 2f0e550ad93545a5322ca744ff12e7865db025b5,5d02221e99dd973ad674e56567bab4b369fae7ac..67bccde1f8160b979dd2e40c0831860e9c8cb876
@@@ -165,8 -165,6 +165,8 @@@ struct mxl5007t_state 
        struct reg_pair_t tab_init_cable[ARRAY_SIZE(init_tab_cable)];
        struct reg_pair_t tab_rftune[ARRAY_SIZE(reg_pair_rftune)];
  
 +      enum mxl5007t_if_freq if_freq;
 +
        u32 frequency;
        u32 bandwidth;
  };
@@@ -288,8 -286,6 +288,8 @@@ static void mxl5007t_set_if_freq_bits(s
        /* set inverted IF or normal IF */
        set_reg_bits(state->tab_init, 0x02, 0x10, invert_if ? 0x10 : 0x00);
  
 +      state->if_freq = if_freq;
 +
        return;
  }
  
@@@ -492,9 -488,10 +492,10 @@@ static int mxl5007t_write_regs(struct m
  
  static int mxl5007t_read_reg(struct mxl5007t_state *state, u8 reg, u8 *val)
  {
+       u8 buf[2] = { 0xfb, reg };
        struct i2c_msg msg[] = {
                { .addr = state->i2c_props.addr, .flags = 0,
-                 .buf = &reg, .len = 1 },
+                 .buf = buf, .len = 2 },
                { .addr = state->i2c_props.addr, .flags = I2C_M_RD,
                  .buf = val, .len = 1 },
        };
@@@ -741,50 -738,6 +742,50 @@@ static int mxl5007t_get_bandwidth(struc
        return 0;
  }
  
 +static int mxl5007t_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 +{
 +      struct mxl5007t_state *state = fe->tuner_priv;
 +
 +      *frequency = 0;
 +
 +      switch (state->if_freq) {
 +      case MxL_IF_4_MHZ:
 +              *frequency = 4000000;
 +              break;
 +      case MxL_IF_4_5_MHZ:
 +              *frequency = 4500000;
 +              break;
 +      case MxL_IF_4_57_MHZ:
 +              *frequency = 4570000;
 +              break;
 +      case MxL_IF_5_MHZ:
 +              *frequency = 5000000;
 +              break;
 +      case MxL_IF_5_38_MHZ:
 +              *frequency = 5380000;
 +              break;
 +      case MxL_IF_6_MHZ:
 +              *frequency = 6000000;
 +              break;
 +      case MxL_IF_6_28_MHZ:
 +              *frequency = 6280000;
 +              break;
 +      case MxL_IF_9_1915_MHZ:
 +              *frequency = 9191500;
 +              break;
 +      case MxL_IF_35_25_MHZ:
 +              *frequency = 35250000;
 +              break;
 +      case MxL_IF_36_15_MHZ:
 +              *frequency = 36150000;
 +              break;
 +      case MxL_IF_44_MHZ:
 +              *frequency = 44000000;
 +              break;
 +      }
 +      return 0;
 +}
 +
  static int mxl5007t_release(struct dvb_frontend *fe)
  {
        struct mxl5007t_state *state = fe->tuner_priv;
@@@ -814,7 -767,6 +815,7 @@@ static struct dvb_tuner_ops mxl5007t_tu
        .get_frequency     = mxl5007t_get_frequency,
        .get_bandwidth     = mxl5007t_get_bandwidth,
        .release           = mxl5007t_release,
 +      .get_if_frequency  = mxl5007t_get_if_frequency,
  };
  
  static int mxl5007t_get_chip_id(struct mxl5007t_state *state)
index 1c865950ddf49697a9bd5e1c69dc9782ab8217da,4fc29730a12ccf2305739c34efa625deef0a1f95..d099501566a105cf297ada07f9b144920166f751
@@@ -141,21 -141,19 +141,21 @@@ static int tda18218_set_params(struct d
        switch (params->u.ofdm.bandwidth) {
        case BANDWIDTH_6_MHZ:
                LP_Fc = 0;
-               priv->if_frequency = 4000000;
 -              LO_Frac = params->frequency + 3000000;
++              priv->if_frequency = 3000000;
                break;
        case BANDWIDTH_7_MHZ:
                LP_Fc = 1;
 -              LO_Frac = params->frequency + 3500000;
 +              priv->if_frequency = 3500000;
                break;
        case BANDWIDTH_8_MHZ:
        default:
                LP_Fc = 2;
 -              LO_Frac = params->frequency + 4000000;
 +              priv->if_frequency = 4000000;
                break;
        }
  
 +      LO_Frac = params->frequency + priv->if_frequency;
 +
        /* band-pass filter */
        if (LO_Frac < 188000000)
                BP_Filter = 3;
@@@ -208,14 -206,6 +208,14 @@@ error
        return ret;
  }
  
 +static int tda18218_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 +{
 +      struct tda18218_priv *priv = fe->tuner_priv;
 +      *frequency = priv->if_frequency;
 +      dbg("%s: if=%d", __func__, *frequency);
 +      return 0;
 +}
 +
  static int tda18218_sleep(struct dvb_frontend *fe)
  {
        struct tda18218_priv *priv = fe->tuner_priv;
@@@ -278,8 -268,6 +278,8 @@@ static const struct dvb_tuner_ops tda18
        .sleep         = tda18218_sleep,
  
        .set_params    = tda18218_set_params,
 +
 +      .get_if_frequency = tda18218_get_if_frequency,
  };
  
  struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
index 05ab3700647e286acf9b01ee994a07cd56eb8014,68497f8ddcd948cdb91f4560c19071a0c4c2d54f..b5957d7918036efb6b14ab1ee4a914644a4b968d
@@@ -21,7 -21,6 +21,7 @@@
  #include <linux/gpio.h>
  #include <linux/regulator/consumer.h>
  #include <linux/videodev2.h>
 +#include <linux/module.h>
  #include <media/v4l2-ctrls.h>
  #include <media/v4l2-device.h>
  #include <media/v4l2-subdev.h>
@@@ -511,9 -510,6 +511,6 @@@ static int m5mols_get_fmt(struct v4l2_s
        struct m5mols_info *info = to_m5mols(sd);
        struct v4l2_mbus_framefmt *format;
  
-       if (fmt->pad != 0)
-               return -EINVAL;
        format = __find_format(info, fh, fmt->which, info->res_type);
        if (!format)
                return -EINVAL;
@@@ -532,9 -528,6 +529,6 @@@ static int m5mols_set_fmt(struct v4l2_s
        u32 resolution = 0;
        int ret;
  
-       if (fmt->pad != 0)
-               return -EINVAL;
        ret = __find_resolution(sd, format, &type, &resolution);
        if (ret < 0)
                return ret;
        if (!sfmt)
                return 0;
  
-       *sfmt           = m5mols_default_ffmt[type];
-       sfmt->width     = format->width;
-       sfmt->height    = format->height;
+       format->code = m5mols_default_ffmt[type].code;
+       format->colorspace = V4L2_COLORSPACE_JPEG;
+       format->field = V4L2_FIELD_NONE;
  
        if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
+               *sfmt = *format;
                info->resolution = resolution;
-               info->code = format->code;
                info->res_type = type;
        }
  
@@@ -626,13 -620,14 +621,14 @@@ static int m5mols_start_monitor(struct 
  static int m5mols_s_stream(struct v4l2_subdev *sd, int enable)
  {
        struct m5mols_info *info = to_m5mols(sd);
+       u32 code = info->ffmt[info->res_type].code;
  
        if (enable) {
                int ret = -EINVAL;
  
-               if (is_code(info->code, M5MOLS_RESTYPE_MONITOR))
+               if (is_code(code, M5MOLS_RESTYPE_MONITOR))
                        ret = m5mols_start_monitor(info);
-               if (is_code(info->code, M5MOLS_RESTYPE_CAPTURE))
+               if (is_code(code, M5MOLS_RESTYPE_CAPTURE))
                        ret = m5mols_start_capture(info);
  
                return ret;
index beacb2cddb45d8eaff6a01a0840ac78ed9beb684,828526d4c28985221e6b6ebba019053e1a137d21..aae0505a36c4ada7cedaafa28074971f42cb76f7
@@@ -24,7 -24,7 +24,7 @@@
  #include <linux/module.h>
  #include <linux/mm.h>
  #include <linux/kref.h>
 -#include <asm/uaccess.h>
 +#include <linux/uaccess.h>
  #include <linux/usb.h>
  
  /* header file for Usb device driver*/
@@@ -32,8 -32,8 +32,8 @@@
  #include "as102_fw.h"
  #include "dvbdev.h"
  
- int debug;
- module_param_named(debug, debug, int, 0644);
+ int as102_debug;
+ module_param_named(debug, as102_debug, int, 0644);
  MODULE_PARM_DESC(debug, "Turn on/off debugging (default: off)");
  
  int dual_tuner;
@@@ -56,11 -56,13 +56,11 @@@ int elna_enable = 1
  module_param_named(elna_enable, elna_enable, int, 0644);
  MODULE_PARM_DESC(elna_enable, "Activate eLNA (default: on)");
  
 -#ifdef DVB_DEFINE_MOD_OPT_ADAPTER_NR
  DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
 -#endif
  
  static void as102_stop_stream(struct as102_dev_t *dev)
  {
 -      struct as102_bus_adapter_t *bus_adap;
 +      struct as10x_bus_adapter_t *bus_adap;
  
        if (dev != NULL)
                bus_adap = &dev->bus_adap;
@@@ -83,7 -85,7 +83,7 @@@
  
  static int as102_start_stream(struct as102_dev_t *dev)
  {
 -      struct as102_bus_adapter_t *bus_adap;
 +      struct as10x_bus_adapter_t *bus_adap;
        int ret = -EFAULT;
  
        if (dev != NULL)
  static int as10x_pid_filter(struct as102_dev_t *dev,
                            int index, u16 pid, int onoff) {
  
 -      struct as102_bus_adapter_t *bus_adap = &dev->bus_adap;
 +      struct as10x_bus_adapter_t *bus_adap = &dev->bus_adap;
        int ret = -EFAULT;
  
        ENTER();
  
        switch (onoff) {
        case 0:
 -          ret = as10x_cmd_del_PID_filter(bus_adap, (uint16_t) pid);
 -          dprintk(debug, "DEL_PID_FILTER([%02d] 0x%04x) ret = %d\n",
 -                  index, pid, ret);
 -          break;
 +              ret = as10x_cmd_del_PID_filter(bus_adap, (uint16_t) pid);
 +              dprintk(debug, "DEL_PID_FILTER([%02d] 0x%04x) ret = %d\n",
 +                      index, pid, ret);
 +              break;
        case 1:
        {
 -          struct as10x_ts_filter filter;
 +              struct as10x_ts_filter filter;
  
 -          filter.type = TS_PID_TYPE_TS;
 -          filter.idx = 0xFF;
 -          filter.pid = pid;
 +              filter.type = TS_PID_TYPE_TS;
 +              filter.idx = 0xFF;
 +              filter.pid = pid;
  
 -          ret = as10x_cmd_add_PID_filter(bus_adap, &filter);
 -          dprintk(debug, "ADD_PID_FILTER([%02d -> %02d], 0x%04x) ret = %d\n",
 -                  index, filter.idx, filter.pid, ret);
 -          break;
 +              ret = as10x_cmd_add_PID_filter(bus_adap, &filter);
 +              dprintk(debug, "ADD_PID_FILTER([%02d -> %02d], 0x%04x) ret = %d\n",
 +                      index, filter.idx, filter.pid, ret);
 +              break;
        }
        }
  
@@@ -157,9 -159,10 +157,9 @@@ static int as102_dvb_dmx_start_feed(str
        if (mutex_lock_interruptible(&as102_dev->sem))
                return -ERESTARTSYS;
  
 -      if (pid_filtering) {
 -              as10x_pid_filter(as102_dev,
 -                              dvbdmxfeed->index, dvbdmxfeed->pid, 1);
 -      }
 +      if (pid_filtering)
 +              as10x_pid_filter(as102_dev, dvbdmxfeed->index,
 +                               dvbdmxfeed->pid, 1);
  
        if (as102_dev->streaming++ == 0)
                ret = as102_start_stream(as102_dev);
@@@ -182,9 -185,10 +182,9 @@@ static int as102_dvb_dmx_stop_feed(stru
        if (--as102_dev->streaming == 0)
                as102_stop_stream(as102_dev);
  
 -      if (pid_filtering) {
 -              as10x_pid_filter(as102_dev,
 -                              dvbdmxfeed->index, dvbdmxfeed->pid, 0);
 -      }
 +      if (pid_filtering)
 +              as10x_pid_filter(as102_dev, dvbdmxfeed->index,
 +                               dvbdmxfeed->pid, 0);
  
        mutex_unlock(&as102_dev->sem);
        LEAVE();
  
  int as102_dvb_register(struct as102_dev_t *as102_dev)
  {
 -      int ret = 0;
 -      ENTER();
 +      struct device *dev = &as102_dev->bus_adap.usb_dev->dev;
 +      int ret;
  
        ret = dvb_register_adapter(&as102_dev->dvb_adap,
 -                                 as102_dev->name,
 -                                 THIS_MODULE,
 -#if defined(CONFIG_AS102_USB)
 -                                 &as102_dev->bus_adap.usb_dev->dev
 -#elif defined(CONFIG_AS102_SPI)
 -                                 &as102_dev->bus_adap.spi_dev->dev
 -#else
 -#error >>> dvb_register_adapter <<<
 -#endif
 -#ifdef DVB_DEFINE_MOD_OPT_ADAPTER_NR
 -                                 , adapter_nr
 -#endif
 -                                 );
 +                         as102_dev->name, THIS_MODULE,
 +                         dev, adapter_nr);
        if (ret < 0) {
 -              err("%s: dvb_register_adapter() failed (errno = %d)",
 -                  __func__, ret);
 -              goto failed;
 +              dev_err(dev, "%s: dvb_register_adapter() failed: %d\n",
 +                      __func__, ret);
 +              return ret;
        }
  
        as102_dev->dvb_dmx.priv = as102_dev;
  
        ret = dvb_dmx_init(&as102_dev->dvb_dmx);
        if (ret < 0) {
 -              err("%s: dvb_dmx_init() failed (errno = %d)", __func__, ret);
 -              goto failed;
 +              dev_err(dev, "%s: dvb_dmx_init() failed: %d\n", __func__, ret);
 +              goto edmxinit;
        }
  
        ret = dvb_dmxdev_init(&as102_dev->dvb_dmxdev, &as102_dev->dvb_adap);
        if (ret < 0) {
 -              err("%s: dvb_dmxdev_init() failed (errno = %d)", __func__,
 -                  ret);
 -              goto failed;
 +              dev_err(dev, "%s: dvb_dmxdev_init() failed: %d\n",
 +                      __func__, ret);
 +              goto edmxdinit;
        }
  
        ret = as102_dvb_register_fe(as102_dev, &as102_dev->dvb_fe);
        if (ret < 0) {
 -              err("%s: as102_dvb_register_frontend() failed (errno = %d)",
 +              dev_err(dev, "%s: as102_dvb_register_frontend() failed: %d",
                    __func__, ret);
 -              goto failed;
 +              goto efereg;
        }
  
        /* init bus mutex for token locking */
        /* init start / stop stream mutex */
        mutex_init(&as102_dev->sem);
  
 -#if defined(CONFIG_FW_LOADER) || defined(CONFIG_FW_LOADER_MODULE)
        /*
         * try to load as102 firmware. If firmware upload failed, we'll be
         * able to upload it later.
        if (fw_upload)
                try_then_request_module(as102_fw_upload(&as102_dev->bus_adap),
                                "firmware_class");
 -#endif
  
 -failed:
 -      LEAVE();
 -      /* FIXME: free dvb_XXX */
 +      pr_info("Registered device %s", as102_dev->name);
 +      return 0;
 +
 +efereg:
 +      dvb_dmxdev_release(&as102_dev->dvb_dmxdev);
 +edmxdinit:
 +      dvb_dmx_release(&as102_dev->dvb_dmx);
 +edmxinit:
 +      dvb_unregister_adapter(&as102_dev->dvb_adap);
        return ret;
  }
  
  void as102_dvb_unregister(struct as102_dev_t *as102_dev)
  {
 -      ENTER();
 -
        /* unregister as102 frontend */
        as102_dvb_unregister_fe(&as102_dev->dvb_fe);
  
        /* unregister dvb adapter */
        dvb_unregister_adapter(&as102_dev->dvb_adap);
  
 -      LEAVE();
 +      pr_info("Unregistered device %s", as102_dev->name);
  }
  
  static int __init as102_driver_init(void)
  {
 -      int ret = 0;
 -
 -      ENTER();
 +      int ret;
  
        /* register this driver with the low level subsystem */
 -#if defined(CONFIG_AS102_USB)
        ret = usb_register(&as102_usb_driver);
        if (ret)
                err("usb_register failed (ret = %d)", ret);
 -#endif
 -#if defined(CONFIG_AS102_SPI)
 -      ret = spi_register_driver(&as102_spi_driver);
 -      if (ret)
 -              printk(KERN_ERR "spi_register failed (ret = %d)", ret);
 -#endif
  
 -      LEAVE();
        return ret;
  }
  
@@@ -304,8 -327,15 +304,8 @@@ module_init(as102_driver_init)
   */
  static void __exit as102_driver_exit(void)
  {
 -      ENTER();
        /* deregister this driver with the low level bus subsystem */
 -#if defined(CONFIG_AS102_USB)
        usb_deregister(&as102_usb_driver);
 -#endif
 -#if defined(CONFIG_AS102_SPI)
 -      spi_unregister_driver(&as102_spi_driver);
 -#endif
 -      LEAVE();
  }
  
  /*
@@@ -317,3 -347,5 +317,3 @@@ module_exit(as102_driver_exit)
  MODULE_DESCRIPTION(DRIVER_FULL_NAME);
  MODULE_LICENSE("GPL");
  MODULE_AUTHOR("Pierrick Hascoet <pierrick.hascoet@abilis.com>");
 -
 -/* EOF - vim: set textwidth=80 ts=8 sw=8 sts=8 noet: */
index 0ecef9e1a6961ad31acc90f39eda8957aefb9a81,fd33f5a12dcc2167cf9dada508b13521f7159b8f..957f0ed0d81aae7c8d587dbca4b853cf862b3814
   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   */
  
 -#if defined(CONFIG_AS102_USB)
  #include <linux/usb.h>
 -extern struct usb_driver as102_usb_driver;
 -#endif
 -
 -#if defined(CONFIG_AS102_SPI)
 -#include <linux/platform_device.h>
 -#include <linux/spi/spi.h>
 -#include <linux/cdev.h>
 -
 -extern struct spi_driver as102_spi_driver;
 -#endif
 -
 -#include "dvb_demux.h"
 -#include "dvb_frontend.h"
 -#include "dmxdev.h"
 +#include <dvb_demux.h>
 +#include <dvb_frontend.h>
 +#include <dmxdev.h>
 +#include "as10x_cmd.h"
 +#include "as102_usb_drv.h"
  
  #define DRIVER_FULL_NAME "Abilis Systems as10x usb driver"
  #define DRIVER_NAME "as10x_usb"
  
- extern int debug;
+ extern int as102_debug;
+ #define debug as102_debug
 +extern struct usb_driver as102_usb_driver;
 +extern int elna_enable;
  
  #define dprintk(debug, args...) \
        do { if (debug) {       \
 -              printk(KERN_DEBUG "%s: ",__FUNCTION__); \
 +              pr_debug("%s: ", __func__);     \
                printk(args);   \
        } } while (0)
  
  #ifdef TRACE
 -#define ENTER()                 printk(">> enter %s\n", __FUNCTION__)
 -#define LEAVE()                 printk("<< leave %s\n", __FUNCTION__)
 +#define ENTER()       pr_debug(">> enter %s\n", __func__)
 +#define LEAVE()       pr_debug("<< leave %s\n", __func__)
  #else
  #define ENTER()
  #define LEAVE()
  #define AS102_USB_BUF_SIZE    512
  #define MAX_STREAM_URB                32
  
 -#include "as10x_cmd.h"
 -
 -#if defined(CONFIG_AS102_USB)
 -#include "as102_usb_drv.h"
 -#endif
 -
 -#if defined(CONFIG_AS102_SPI)
 -#include "as10x_spi_drv.h"
 -#endif
 -
 -
 -struct as102_bus_adapter_t {
 -#if defined(CONFIG_AS102_USB)
 +struct as10x_bus_adapter_t {
        struct usb_device *usb_dev;
 -#elif defined(CONFIG_AS102_SPI)
 -      struct spi_device *spi_dev;
 -      struct cdev cdev; /* spidev raw device */
 -
 -      struct timer_list timer;
 -      struct completion xfer_done;
 -#endif
        /* bus token lock */
        struct mutex lock;
        /* low level interface for bus adapter */
        union as10x_bus_token_t {
 -#if defined(CONFIG_AS102_USB)
                /* usb token */
                struct as10x_usb_token_cmd_t usb;
 -#endif
 -#if defined(CONFIG_AS102_SPI)
 -              /* spi token */
 -              struct as10x_spi_token_cmd_t spi;
 -#endif
        } token;
  
        /* token cmd xfer id */
  
  struct as102_dev_t {
        const char *name;
 -      struct as102_bus_adapter_t bus_adap;
 +      struct as10x_bus_adapter_t bus_adap;
        struct list_head device_entry;
        struct kref kref;
        unsigned long minor;
@@@ -104,3 -138,5 +105,3 @@@ void as102_dvb_unregister(struct as102_
  
  int as102_dvb_register_fe(struct as102_dev_t *dev, struct dvb_frontend *fe);
  int as102_dvb_unregister_fe(struct dvb_frontend *dev);
 -
 -/* EOF - vim: set textwidth=80 ts=8 sw=8 sts=8 noet: */