[S390] fix non-smp compile.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=188596faf788f2881a0eb316f2604832df058ea8
Commit: 188596faf788f2881a0eb316f2604832df058ea8
Parent: bf6f6aa46feada857a52cb67d99a7c2fe4a70e87
Author: Jan Glauber [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:03 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:03 2007 +0100

[S390] fix non-smp compile.

Fix compile of sclp_quiesce for CONFIG_SMP=n.

Signed-off-by: Jan Glauber [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 drivers/s390/char/sclp_quiesce.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/s390/char/sclp_quiesce.c b/drivers/s390/char/sclp_quiesce.c
index ffa9282..baa8fe6 100644
--- a/drivers/s390/char/sclp_quiesce.c
+++ b/drivers/s390/char/sclp_quiesce.c
@@ -16,6 +16,7 @@
 #include asm/atomic.h
 #include asm/ptrace.h
 #include asm/sigp.h
+#include asm/smp.h
 
 #include sclp.h
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] update default configuration

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=489c80ba8aa9dde8244897cba33a9372c897e531
Commit: 489c80ba8aa9dde8244897cba33a9372c897e531
Parent: c8f71b01a50597e298dc3214a2f2be7b8d31170c
Author: Martin Schwidefsky [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:54:57 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:54:57 2007 +0100

[S390] update default configuration

Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/defconfig |   21 +++--
 1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 1406400..741d2bb 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -1,9 +1,10 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20-rc1
-# Fri Dec 15 16:52:28 2006
+# Linux kernel version: 2.6.21-rc1
+# Wed Feb 21 10:44:30 2007
 #
 CONFIG_MMU=y
+CONFIG_ZONE_DMA=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_STACKTRACE_SUPPORT=y
 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
@@ -11,6 +12,7 @@ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_TIME=y
+CONFIG_NO_IOMEM=y
 CONFIG_S390=y
 CONFIG_DEFCONFIG_LIST=/lib/modules/$UNAME_RELEASE/.config
 
@@ -29,6 +31,7 @@ CONFIG_LOCALVERSION_AUTO=y
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 # CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_TASKSTATS is not set
@@ -133,6 +136,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
 # CONFIG_SPARSEMEM_STATIC is not set
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_RESOURCES_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
 CONFIG_HOLES_IN_ZONE=y
 
 #
@@ -178,7 +182,9 @@ CONFIG_UNIX=y
 CONFIG_XFRM=y
 # CONFIG_XFRM_USER is not set
 # CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
 CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
 CONFIG_IUCV=m
 CONFIG_AFIUCV=m
 CONFIG_INET=y
@@ -195,7 +201,7 @@ CONFIG_IP_FIB_HASH=y
 # CONFIG_INET_ESP is not set
 # CONFIG_INET_IPCOMP is not set
 # CONFIG_INET_XFRM_TUNNEL is not set
-# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_TUNNEL=y
 CONFIG_INET_XFRM_MODE_TRANSPORT=y
 CONFIG_INET_XFRM_MODE_TUNNEL=y
 CONFIG_INET_XFRM_MODE_BEET=y
@@ -313,6 +319,7 @@ CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 # CONFIG_FW_LOADER is not set
 # CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
 
 #
@@ -686,13 +693,13 @@ CONFIG_HEADERS_CHECK=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_LOG_BUF_SHIFT=17
 # CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
 # CONFIG_DEBUG_SLAB is not set
 CONFIG_DEBUG_PREEMPT=y
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
 CONFIG_DEBUG_SPINLOCK=y
 CONFIG_DEBUG_MUTEXES=y
-# CONFIG_DEBUG_RWSEMS is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
 CONFIG_DEBUG_SPINLOCK_SLEEP=y
@@ -702,10 +709,10 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
 # CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_LIST is not set
 # CONFIG_FRAME_POINTER is not set
-# CONFIG_UNWIND_INFO is not set
 CONFIG_FORCED_INLINING=y
 # CONFIG_RCU_TORTURE_TEST is not set
 # CONFIG_LKDTM is not set
+# CONFIG_FAULT_INJECTION is not set
 
 #
 # Security options
@@ -733,8 +740,10 @@ CONFIG_CRYPTO_MANAGER=y
 # CONFIG_CRYPTO_GF128MUL is not set
 CONFIG_CRYPTO_ECB=m
 CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
 # CONFIG_CRYPTO_LRW is not set
 # CONFIG_CRYPTO_DES is not set
+CONFIG_CRYPTO_FCRYPT=m
 # CONFIG_CRYPTO_BLOWFISH is not set
 # CONFIG_CRYPTO_TWOFISH is not set
 # CONFIG_CRYPTO_SERPENT is not set
@@ -748,6 +757,7 @@ CONFIG_CRYPTO_CBC=y
 # CONFIG_CRYPTO_DEFLATE is not set
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
 # CONFIG_CRYPTO_CRC32C is not set
+CONFIG_CRYPTO_CAMELLIA=m
 # CONFIG_CRYPTO_TEST is not set
 
 #
@@ -768,4 +778,3 @@ CONFIG_BITREVERSE=m
 CONFIG_CRC32=m
 # CONFIG_LIBCRC32C is not set
 CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] prevent softirqs if delay is called disabled

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bf6f6aa46feada857a52cb67d99a7c2fe4a70e87
Commit: bf6f6aa46feada857a52cb67d99a7c2fe4a70e87
Parent: 489c80ba8aa9dde8244897cba33a9372c897e531
Author: Martin Schwidefsky [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:00 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:00 2007 +0100

[S390] prevent softirqs if delay is called disabled

The new delay implementation uses the clock comparator and an external
interrupt even if it is called disabled for interrupts. To do this
all external interrupt source except clock comparator are switched of
before enabling external interrupts. The external interrupt at the
end of the delay period may not execute softirqs or we can end up in a
dead-lock.

Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/lib/delay.c |7 +++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c
index 0285444..70f2a86 100644
--- a/arch/s390/lib/delay.c
+++ b/arch/s390/lib/delay.c
@@ -15,6 +15,7 @@
 #include linux/delay.h
 #include linux/timex.h
 #include linux/irqflags.h
+#include linux/interrupt.h
 
 void __delay(unsigned long loops)
 {
@@ -35,7 +36,11 @@ void __udelay(unsigned long usecs)
 {
u64 end, time, jiffy_timer = 0;
unsigned long flags, cr0, mask, dummy;
+   int irq_context;
 
+   irq_context = in_interrupt();
+   if (!irq_context)
+   local_bh_disable();
local_irq_save(flags);
if (raw_irqs_disabled_flags(flags)) {
jiffy_timer = S390_lowcore.jiffy_timer;
@@ -62,6 +67,8 @@ void __udelay(unsigned long usecs)
__ctl_load(cr0, 0, 0);
S390_lowcore.jiffy_timer = jiffy_timer;
}
+   if (!irq_context)
+   _local_bh_enable();
set_clock_comparator(S390_lowcore.jiffy_timer);
local_irq_restore(flags);
 }
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] smp_call_function cleanup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=63db6e8d41c703c26a3ce767740a9c8484765a74
Commit: 63db6e8d41c703c26a3ce767740a9c8484765a74
Parent: 188596faf788f2881a0eb316f2604832df058ea8
Author: Jan Glauber [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:06 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:06 2007 +0100

[S390] smp_call_function cleanup

Introduce __smp_call_function_map which calls a function on all cpus
given with a cpumask_t. Use it to implement smp_call_function and
smp_call_function_on. Replace smp_ext_bitcall_others with smp_ext_bitcall
and a for_each_cpu_mask loop. Use a cpumask_t instead of an atomic_t for
cpu counting and print a warning if preempt is on in
__smp_call_function_map().

Signed-off-by: Jan Glauber [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/smp.c |  181 ---
 1 files changed, 77 insertions(+), 104 deletions(-)

diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 83a4ea6..432deb2 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -54,19 +54,18 @@ cpumask_t cpu_possible_map = CPU_MASK_NONE;
 static struct task_struct *current_set[NR_CPUS];
 
 static void smp_ext_bitcall(int, ec_bit_sig);
-static void smp_ext_bitcall_others(ec_bit_sig);
 
 /*
- * Structure and data for smp_call_function(). This is designed to minimise
- * static memory requirements. It also looks cleaner.
+ * Structure and data for __smp_call_function_map(). This is designed to
+ * minimise static memory requirements. It also looks cleaner.
  */
 static DEFINE_SPINLOCK(call_lock);
 
 struct call_data_struct {
void (*func) (void *info);
void *info;
-   atomic_t started;
-   atomic_t finished;
+   cpumask_t started;
+   cpumask_t finished;
int wait;
 };
 
@@ -81,118 +80,113 @@ static void do_call_function(void)
void *info = call_data-info;
int wait = call_data-wait;
 
-   atomic_inc(call_data-started);
+   cpu_set(smp_processor_id(), call_data-started);
(*func)(info);
if (wait)
-   atomic_inc(call_data-finished);
+   cpu_set(smp_processor_id(), call_data-finished);;
 }
 
-/*
- * this function sends a 'generic call function' IPI to all other CPUs
- * in the system.
- */
-
-int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
-   int wait)
-/*
- * [SUMMARY] Run a function on all other CPUs.
- * func The function to run. This must be fast and non-blocking.
- * info An arbitrary pointer to pass to the function.
- * nonatomic currently unused.
- * wait If true, wait (atomically) until function has completed on other 
CPUs.
- * [RETURNS] 0 on success, else a negative status code. Does not return until
- * remote CPUs are nearly ready to execute func or are or have executed.
- *
- * You must not call this function with disabled interrupts or from a
- * hardware interrupt handler.
- */
+static void __smp_call_function_map(void (*func) (void *info), void *info,
+   int nonatomic, int wait, cpumask_t map)
 {
struct call_data_struct data;
-   int cpus = num_online_cpus()-1;
+   int cpu, local = 0;
 
-   if (cpus = 0)
-   return 0;
+   /*
+* Can deadlock when interrupts are disabled or if in wrong context,
+* caller must disable preemption
+*/
+   WARN_ON(irqs_disabled() || in_irq() || preemptible());
 
-   /* Can deadlock when interrupts are disabled or if in wrong context */
-   WARN_ON(irqs_disabled() || in_irq());
+   /*
+* Check for local function call. We have to have the same call order
+* as in on_each_cpu() because of machine_restart_smp().
+*/
+   if (cpu_isset(smp_processor_id(), map)) {
+   local = 1;
+   cpu_clear(smp_processor_id(), map);
+   }
+
+   cpus_and(map, map, cpu_online_map);
+   if (cpus_empty(map))
+   goto out;
 
data.func = func;
data.info = info;
-   atomic_set(data.started, 0);
+   data.started = CPU_MASK_NONE;
data.wait = wait;
if (wait)
-   atomic_set(data.finished, 0);
+   data.finished = CPU_MASK_NONE;
 
spin_lock_bh(call_lock);
call_data = data;
-   /* Send a message to all other CPUs and wait for them to respond */
-smp_ext_bitcall_others(ec_call_function);
+
+   for_each_cpu_mask(cpu, map)
+   smp_ext_bitcall(cpu, ec_call_function);
 
/* Wait for response */
-   while (atomic_read(data.started) != cpus)
+   while (!cpus_equal(map, data.started))
cpu_relax();
 
if (wait)
-   while (atomic_read(data.finished) != cpus)
+   while 

[S390] Optional ZONE_DMA for s390.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=118bcd31b309d12638f67729d5d96d4974750249
Commit: 118bcd31b309d12638f67729d5d96d4974750249
Parent: 63db6e8d41c703c26a3ce767740a9c8484765a74
Author: Heiko Carstens [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:12 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:12 2007 +0100

[S390] Optional ZONE_DMA for s390.

Disable ZONE_DMA on 31-bit. All memory is addressable by all
devices and we do not need any special memory pool.

Signed-off-by: Heiko Carstens [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/Kconfig   |4 ++--
 arch/s390/mm/init.c |2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index eaaac37..d9425f5 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -8,8 +8,8 @@ config MMU
default y
 
 config ZONE_DMA
-   bool
-   default y
+   def_bool y
+   depends on 64BIT
 
 config LOCKDEP_SUPPORT
bool
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index b3e7c45..916b72a 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -141,7 +141,9 @@ void __init paging_init(void)
__raw_local_irq_ssm(ssm_mask);
 
memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
+#ifdef CONFIG_ZONE_DMA
max_zone_pfns[ZONE_DMA] = PFN_DOWN(MAX_DMA_ADDRESS);
+#endif
max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
free_area_init_nodes(max_zone_pfns);
 }
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] New get_cpu_id() inline assembly

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=72960a02c270950253126ee8b339afd400f55273
Commit: 72960a02c270950253126ee8b339afd400f55273
Parent: 6c732de2d3673e28c6a976c98ee6ba4d197a919a
Author: Michael Holzheu [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:18 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:18 2007 +0100

[S390] New get_cpu_id() inline assembly

Replace two stidp inline assemblies with one global implementation.

Signed-off-by: Michael Holzheu [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/early.c |2 +-
 arch/s390/kernel/setup.c |2 +-
 include/asm-s390/processor.h |5 +
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index e518dd5..011e8c7 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -129,7 +129,7 @@ static noinline __init void detect_machine_type(void)
 {
struct cpuinfo_S390 *cpuinfo = S390_lowcore.cpu_data;
 
-   asm volatile(stidp %0 : =m (S390_lowcore.cpu_data.cpu_id));
+   get_cpu_id(S390_lowcore.cpu_data.cpu_id);
 
/* Running under z/VM ? */
if (cpuinfo-cpu_id.version == 0xff)
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 50c5210..49567d8 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -106,7 +106,7 @@ void __devinit cpu_init (void)
 /*
  * Store processor id in lowcore (used e.g. in timer_interrupt)
  */
-   asm volatile(stidp %0: =m (S390_lowcore.cpu_data.cpu_id));
+   get_cpu_id(S390_lowcore.cpu_data.cpu_id);
 S390_lowcore.cpu_data.cpu_addr = addr;
 
 /*
diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h
index 4c1b739..33b80ce 100644
--- a/include/asm-s390/processor.h
+++ b/include/asm-s390/processor.h
@@ -36,6 +36,11 @@ typedef struct
 unsigned int unused  : 16;
 } __attribute__ ((packed)) cpuid_t;
 
+static inline void get_cpu_id(cpuid_t *ptr)
+{
+   asm volatile(stidp 0(%1) : =m (*ptr) : a (ptr));
+}
+
 struct cpuinfo_S390
 {
 cpuid_t  cpu_id;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] New header file ipl.h

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=46b05d2617c8efd8ec6b19acd2c95541a0118c13
Commit: 46b05d2617c8efd8ec6b19acd2c95541a0118c13
Parent: 72960a02c270950253126ee8b339afd400f55273
Author: Michael Holzheu [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:21 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:21 2007 +0100

[S390] New header file ipl.h

Setup.h has been misused for ipl related stuff in the past. We now move
everything, which has to do with ipl and reipl to a new header file named
ipl.h.

Signed-off-by: Michael Holzheu [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/early.c |1 +
 arch/s390/kernel/ipl.c   |   24 +-
 arch/s390/kernel/setup.c |1 +
 arch/s390/kernel/smp.c   |1 +
 drivers/s390/cio/cio.c   |1 +
 include/asm-s390/ipl.h   |  113 ++
 include/asm-s390/setup.h |   74 --
 7 files changed, 119 insertions(+), 96 deletions(-)

diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index 011e8c7..5d02e48 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -14,6 +14,7 @@
 #include linux/module.h
 #include linux/pfn.h
 #include linux/uaccess.h
+#include asm/ipl.h
 #include asm/lowcore.h
 #include asm/processor.h
 #include asm/sections.h
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 0522595..a241042 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -14,6 +14,7 @@
 #include linux/delay.h
 #include linux/reboot.h
 #include linux/ctype.h
+#include asm/ipl.h
 #include asm/smp.h
 #include asm/setup.h
 #include asm/cpcmd.h
@@ -94,27 +95,6 @@ static char *shutdown_action_str(enum shutdown_action action)
}
 }
 
-enum diag308_subcode  {
-   DIAG308_IPL   = 3,
-   DIAG308_DUMP  = 4,
-   DIAG308_SET   = 5,
-   DIAG308_STORE = 6,
-};
-
-enum diag308_ipl_type {
-   DIAG308_IPL_TYPE_FCP = 0,
-   DIAG308_IPL_TYPE_CCW = 2,
-};
-
-enum diag308_opt {
-   DIAG308_IPL_OPT_IPL  = 0x10,
-   DIAG308_IPL_OPT_DUMP = 0x20,
-};
-
-enum diag308_rc {
-   DIAG308_RC_OK = 1,
-};
-
 static int diag308_set_works = 0;
 
 static int reipl_capabilities = IPL_TYPE_UNKNOWN;
@@ -134,7 +114,7 @@ static struct ipl_parameter_block *dump_block_ccw;
 
 static enum shutdown_action on_panic_action = SHUTDOWN_STOP;
 
-static int diag308(unsigned long subcode, void *addr)
+int diag308(unsigned long subcode, void *addr)
 {
register unsigned long _addr asm(0) = (unsigned long) addr;
register unsigned long _rc asm(1) = 0;
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 49567d8..fced022 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -41,6 +41,7 @@
 #include linux/ctype.h
 #include linux/reboot.h
 
+#include asm/ipl.h
 #include asm/uaccess.h
 #include asm/system.h
 #include asm/smp.h
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 432deb2..ecaa432 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -31,6 +31,7 @@
 #include linux/interrupt.h
 #include linux/cpu.h
 #include linux/timex.h
+#include asm/ipl.h
 #include asm/setup.h
 #include asm/sigp.h
 #include asm/pgalloc.h
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index b3a56dc..e4471e6 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -21,6 +21,7 @@
 #include asm/irq_regs.h
 #include asm/setup.h
 #include asm/reset.h
+#include asm/ipl.h
 #include airq.h
 #include cio.h
 #include css.h
diff --git a/include/asm-s390/ipl.h b/include/asm-s390/ipl.h
new file mode 100644
index 000..5650d3d
--- /dev/null
+++ b/include/asm-s390/ipl.h
@@ -0,0 +1,113 @@
+/*
+ * s390 (re)ipl support
+ *
+ * Copyright IBM Corp. 2007
+ */
+
+#ifndef _ASM_S390_IPL_H
+#define _ASM_S390_IPL_H
+
+#include asm/types.h
+
+#define IPL_PARMBLOCK_ORIGIN   0x2000
+
+#define IPL_PARM_BLK_FCP_LEN (sizeof(struct ipl_list_hdr) + \
+ sizeof(struct ipl_block_fcp))
+
+#define IPL_PARM_BLK_CCW_LEN (sizeof(struct ipl_list_hdr) + \
+ sizeof(struct ipl_block_ccw))
+
+#define IPL_MAX_SUPPORTED_VERSION (0)
+
+#define IPL_PARMBLOCK_START((struct ipl_parameter_block *) \
+IPL_PARMBLOCK_ORIGIN)
+#define IPL_PARMBLOCK_SIZE (IPL_PARMBLOCK_START-hdr.len)
+
+struct ipl_list_hdr {
+   u32 len;
+   u8  reserved1[3];
+   u8  version;
+   u32 blk0_len;
+   u8  pbt;
+   u8  flags;
+   u16 reserved2;
+} __attribute__((packed));
+
+struct ipl_block_fcp {
+   u8  reserved1[313-1];
+   u8  opt;
+   u8  reserved2[3];
+   u16 reserved3;
+   u16 devno;
+   u8  reserved4[4];
+   u64 wwpn;
+   u64 lun;
+   u32 bootprog;
+   u8  reserved5[12];
+   u64 br_lba;
+   u32 scp_data_len;
+   

[S390] Remove BUG() statement

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2b9329367504d19c7c166c5aec557d070caccd70
Commit: 2b9329367504d19c7c166c5aec557d070caccd70
Parent: 46b05d2617c8efd8ec6b19acd2c95541a0118c13
Author: Michael Holzheu [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:24 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:24 2007 +0100

[S390] Remove BUG() statement

To avoid ugly warings for older gccs, we replace
BUG() with return NULL, which is just as well.

Signed-off-by: Michael Holzheu [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/ipl.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index a241042..ee6826a 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -91,7 +91,7 @@ static char *shutdown_action_str(enum shutdown_action action)
case SHUTDOWN_STOP:
return SHUTDOWN_STOP_STR;
default:
-   BUG();
+   return NULL;
}
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] bss section clearing.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=229d9c6dfb2900559449575a56dc8abcaf0bce9d
Commit: 229d9c6dfb2900559449575a56dc8abcaf0bce9d
Parent: 2b9329367504d19c7c166c5aec557d070caccd70
Author: Heiko Carstens [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:29 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:29 2007 +0100

[S390] bss section clearing.

Clear only memory from __bss_start to __bss_stop when clearing the bss
section. Not until _end, which currently happens to be the same.

Signed-off-by: Heiko Carstens [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/early.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index 5d02e48..afca1c6 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -110,7 +110,7 @@ static inline void create_kernel_nss(void) { }
  */
 static noinline __init void clear_bss_section(void)
 {
-   memset(__bss_start, 0, _end - __bss_start);
+   memset(__bss_start, 0, __bss_stop - __bss_start);
 }
 
 /*
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] etr: Add barrier() to etr_sync_cpu_start().

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6c732de2d3673e28c6a976c98ee6ba4d197a919a
Commit: 6c732de2d3673e28c6a976c98ee6ba4d197a919a
Parent: 118bcd31b309d12638f67729d5d96d4974750249
Author: Heiko Carstens [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:15 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:15 2007 +0100

[S390] etr: Add barrier() to etr_sync_cpu_start().

Force reading of *in_sync in while loop. Loops where the content that
is checked for is changed by a different cpu always should have some
sort of barrier() semantics.
Otherwise this might lead to very subtle bugs.

Signed-off-by: Heiko Carstens [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/time.c |   10 +-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index ee9fd7b..e1ad464 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -747,6 +747,7 @@ static void etr_adjust_time(unsigned long long clock, 
unsigned long long delay)
}
 }
 
+#ifdef CONFIG_SMP
 static void etr_sync_cpu_start(void *dummy)
 {
int *in_sync = dummy;
@@ -758,8 +759,14 @@ static void etr_sync_cpu_start(void *dummy)
 * __udelay will stop the cpu on an enabled wait psw until the
 * TOD is running again.
 */
-   while (*in_sync == 0)
+   while (*in_sync == 0) {
__udelay(1);
+   /*
+* A different cpu changes *in_sync. Therefore use
+* barrier() to force memory access.
+*/
+   barrier();
+   }
if (*in_sync != 1)
/* Didn't work. Clear per-cpu in sync bit again. */
etr_disable_sync_clock(NULL);
@@ -773,6 +780,7 @@ static void etr_sync_cpu_start(void *dummy)
 static void etr_sync_cpu_end(void *dummy)
 {
 }
+#endif /* CONFIG_SMP */
 
 /*
  * Sync the TOD clock using the port refered to by aibp. This port
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] nss: Free unused memory in kernel image.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=615b04b301fd4e1b7680a498b873c4ae9baad92f
Commit: 615b04b301fd4e1b7680a498b873c4ae9baad92f
Parent: 229d9c6dfb2900559449575a56dc8abcaf0bce9d
Author: Heiko Carstens [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:37 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:37 2007 +0100

[S390] nss: Free unused memory in kernel image.

With CONFIG_SHARED_KERNEL the kernel text segment that might be in a
read only memory sections starts at 1MB. Memory between 0x12000 and
0x10 is unused then. Free this, so we have appr. an extra MB
of memory available.

Signed-off-by: Heiko Carstens [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/kernel/head31.S   |   15 ++-
 arch/s390/kernel/head64.S   |   16 ++--
 arch/s390/kernel/ipl.c  |7 +++
 arch/s390/kernel/setup.c|7 ++-
 drivers/s390/cio/cio.c  |2 +-
 include/asm-s390/sections.h |2 +-
 6 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S
index 453fd3b..da7c8bb 100644
--- a/arch/s390/kernel/head31.S
+++ b/arch/s390/kernel/head31.S
@@ -148,20 +148,9 @@ startup_continue:
 .Lstartup_init:
.long startup_init
 
-   .globl ipl_schib
-ipl_schib:
-   .rept 13
-   .long 0
-   .endr
-
-   .globl ipl_flags
-ipl_flags:
-   .long 0
-   .globl ipl_devno
-ipl_devno:
-   .word 0
-
.org0x12000
+   .globl  _ehead
+_ehead:
 #ifdef CONFIG_SHARED_KERNEL
.org0x10
 #endif
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index b8fec4e..af09e18 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -154,21 +154,9 @@ startup_continue:
 .Lparmaddr:
.quad   PARMAREA
 
-   .globl  ipl_schib
-ipl_schib:
-   .rept 13
-   .long 0
-   .endr
-
-   .globl  ipl_flags
-ipl_flags:
-   .long   0
-   .globl  ipl_devno
-ipl_devno:
-   .word 0
-
.org0x12000
-
+   .globl  _ehead
+_ehead:
 #ifdef CONFIG_SHARED_KERNEL
.org0x10
 #endif
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index ee6826a..5a863a3 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -43,6 +43,13 @@ enum ipl_type {
 #define IPL_FCP_STR fcp
 #define IPL_NSS_STR nss
 
+/*
+ * Must be in data section since the bss section
+ * is not cleared when these are accessed.
+ */
+u16 ipl_devno __attribute__((__section__(.data))) = 0;
+u32 ipl_flags __attribute__((__section__(.data))) = 0;
+
 static char *ipl_type_str(enum ipl_type type)
 {
switch (type) {
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index fced022..863c8d0 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -690,9 +690,14 @@ setup_memory(void)
psw_set_key(PAGE_DEFAULT_KEY);
 
free_bootmem_with_active_regions(0, max_pfn);
-   reserve_bootmem(0, PFN_PHYS(start_pfn));
 
/*
+* Reserve memory used for lowcore/command line/kernel image.
+*/
+   reserve_bootmem(0, (unsigned long)_ehead);
+   reserve_bootmem((unsigned long)_stext,
+   PFN_PHYS(start_pfn) - (unsigned long)_stext);
+   /*
 * Reserve the bootmem bitmap itself as well. We do this in two
 * steps (first step was init_bootmem()) because this catches
 * the (very unlikely) case of us accidentally initializing the
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index e4471e6..9cb129a 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -1048,7 +1048,7 @@ void reipl_ccw_dev(struct ccw_dev_id *devid)
do_reipl_asm(*((__u32*)schid));
 }
 
-extern struct schib ipl_schib;
+static struct schib __initdata ipl_schib;
 
 /*
  * ipl_save_parameters gets called very early. It is not allowed to access
diff --git a/include/asm-s390/sections.h b/include/asm-s390/sections.h
index 1c5a2c4..fbd9116 100644
--- a/include/asm-s390/sections.h
+++ b/include/asm-s390/sections.h
@@ -3,6 +3,6 @@
 
 #include asm-generic/sections.h
 
-extern char _eshared[];
+extern char _eshared[], _ehead[];
 
 #endif
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] Replace $(ARCH) macros in Makefile

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4562c9fffc3f8fca99f22671ad497aedd1737a5e
Commit: 4562c9fffc3f8fca99f22671ad497aedd1737a5e
Parent: 615b04b301fd4e1b7680a498b873c4ae9baad92f
Author: Michael Holzheu [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:46 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:46 2007 +0100

[S390] Replace $(ARCH) macros in Makefile

Since $(ARCH) is always s390 we can replace it with s390.

Signed-off-by: Michael Holzheu [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 arch/s390/Makefile |   12 ++--
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/s390/Makefile b/arch/s390/Makefile
index 6598e52..b1e5584 100644
--- a/arch/s390/Makefile
+++ b/arch/s390/Makefile
@@ -82,18 +82,18 @@ AFLAGS  += $(aflags-y)
 OBJCOPYFLAGS   := -O binary
 LDFLAGS_vmlinux := -e start
 
-head-y := arch/$(ARCH)/kernel/head.o arch/$(ARCH)/kernel/init_task.o
+head-y := arch/s390/kernel/head.o arch/s390/kernel/init_task.o
 
-core-y += arch/$(ARCH)/mm/ arch/$(ARCH)/kernel/ arch/$(ARCH)/crypto/ \
-  arch/$(ARCH)/appldata/ arch/$(ARCH)/hypfs/
-libs-y += arch/$(ARCH)/lib/
+core-y += arch/s390/mm/ arch/s390/kernel/ arch/s390/crypto/ \
+  arch/s390/appldata/ arch/s390/hypfs/
+libs-y += arch/s390/lib/
 drivers-y  += drivers/s390/
-drivers-$(CONFIG_MATHEMU) += arch/$(ARCH)/math-emu/
+drivers-$(CONFIG_MATHEMU) += arch/s390/math-emu/
 
 # must be linked after kernel
 drivers-$(CONFIG_OPROFILE) += arch/s390/oprofile/
 
-boot   := arch/$(ARCH)/boot
+boot   := arch/s390/boot
 
 all: image
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] local_t cleanup : use asm-generic/local.h.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=de61c9341ba144f6f21fdaae48ffbd811fc6637f
Commit: de61c9341ba144f6f21fdaae48ffbd811fc6637f
Parent: 4562c9fffc3f8fca99f22671ad497aedd1737a5e
Author: Mathieu Desnoyers [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:55 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:55 2007 +0100

[S390] local_t cleanup : use asm-generic/local.h.

Signed-off-by: Mathieu Desnoyers [EMAIL PROTECTED]
Cc: Heiko Carstens [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 include/asm-s390/local.h |   59 +-
 1 files changed, 1 insertions(+), 58 deletions(-)

diff --git a/include/asm-s390/local.h b/include/asm-s390/local.h
index 86745a1..c11c530 100644
--- a/include/asm-s390/local.h
+++ b/include/asm-s390/local.h
@@ -1,58 +1 @@
-#ifndef _ASM_LOCAL_H
-#define _ASM_LOCAL_H
-
-#include linux/percpu.h
-#include asm/atomic.h
-
-#ifndef __s390x__
-
-typedef atomic_t local_t;
-
-#define LOCAL_INIT(i)  ATOMIC_INIT(i)
-#define local_read(v)  atomic_read(v)
-#define local_set(v,i) atomic_set(v,i)
-
-#define local_inc(v)   atomic_inc(v)
-#define local_dec(v)   atomic_dec(v)
-#define local_add(i, v)atomic_add(i, v)
-#define local_sub(i, v)atomic_sub(i, v)
-
-#else
-
-typedef atomic64_t local_t;
-
-#define LOCAL_INIT(i)  ATOMIC64_INIT(i)
-#define local_read(v)  atomic64_read(v)
-#define local_set(v,i) atomic64_set(v,i)
-
-#define local_inc(v)   atomic64_inc(v)
-#define local_dec(v)   atomic64_dec(v)
-#define local_add(i, v)atomic64_add(i, v)
-#define local_sub(i, v)atomic64_sub(i, v)
-
-#endif
-
-#define __local_inc(v) ((v)-counter++)
-#define __local_dec(v) ((v)-counter--)
-#define __local_add(i,v)   ((v)-counter+=(i))
-#define __local_sub(i,v)   ((v)-counter-=(i))
-
-/*
- * Use these for per-cpu local_t variables: on some archs they are
- * much more efficient than these naive implementations.  Note they take
- * a variable, not an address.
- */
-#define cpu_local_read(v)  local_read(__get_cpu_var(v))
-#define cpu_local_set(v, i)local_set(__get_cpu_var(v), (i))
-
-#define cpu_local_inc(v)   local_inc(__get_cpu_var(v))
-#define cpu_local_dec(v)   local_dec(__get_cpu_var(v))
-#define cpu_local_add(i, v)local_add((i), __get_cpu_var(v))
-#define cpu_local_sub(i, v)local_sub((i), __get_cpu_var(v))
-
-#define __cpu_local_inc(v) __local_inc(__get_cpu_var(v))
-#define __cpu_local_dec(v) __local_dec(__get_cpu_var(v))
-#define __cpu_local_add(i, v)  __local_add((i), __get_cpu_var(v))
-#define __cpu_local_sub(i, v)  __local_sub((i), __get_cpu_var(v))
-
-#endif /* _ASM_LOCAL_H */
+#include asm-generic/local.h
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[S390] add atomic64_xchg to s390

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3a5f10e3708e00c406f154bae412652ec3eb2b48
Commit: 3a5f10e3708e00c406f154bae412652ec3eb2b48
Parent: de61c9341ba144f6f21fdaae48ffbd811fc6637f
Author: Mathieu Desnoyers [EMAIL PROTECTED]
AuthorDate: Wed Feb 21 10:55:59 2007 +0100
Committer:  Martin Schwidefsky [EMAIL PROTECTED]
CommitDate: Wed Feb 21 10:55:59 2007 +0100

[S390] add atomic64_xchg to s390

Signed-off-by: Mathieu Desnoyers [EMAIL PROTECTED]
Cc: Heiko Carstens [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Martin Schwidefsky [EMAIL PROTECTED]
---
 include/asm-s390/atomic.h |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/include/asm-s390/atomic.h b/include/asm-s390/atomic.h
index af20c74..c17bdbf 100644
--- a/include/asm-s390/atomic.h
+++ b/include/asm-s390/atomic.h
@@ -215,6 +215,8 @@ static __inline__ void atomic64_set_mask(unsigned long 
mask, atomic64_t * v)
   __CSG_LOOP(v, mask, ogr);
 }
 
+#define atomic64_xchg(v, new) (xchg(((v)-counter), new))
+
 static __inline__ long long atomic64_cmpxchg(atomic64_t *v,
 long long old, long long new)
 {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4961): Add support for the ASUS P7131 remote control

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9160723ed620f31bf38332dee02041b1cb4c9967
Commit: 9160723ed620f31bf38332dee02041b1cb4c9967
Parent: c8f71b01a50597e298dc3214a2f2be7b8d31170c
Author: Hermann Pitton [EMAIL PROTECTED]
AuthorDate: Thu Dec 7 21:45:28 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:12 2007 -0200

V4L/DVB (4961): Add support for the ASUS P7131 remote control

Besides adding the board specific code, this patch moves
the RC5 decoding code from bt8xx to ir-functions.c to make it available
for all drivers.

Signed-off-by: Marc Fargas telenieko.telenieko.com
Signed-off-by: Hermann Pitton [EMAIL PROTECTED]
Signed-off-by: Hartmut Hackmann [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/common/ir-functions.c |  110 
 drivers/media/common/ir-keymaps.c   |   54 ++
 drivers/media/video/bt8xx/bttv-input.c  |  143 ---
 drivers/media/video/bt8xx/bttv.h|   27 -
 drivers/media/video/bt8xx/bttvp.h   |2 +-
 drivers/media/video/saa7134/saa7134-cards.c |1 +
 drivers/media/video/saa7134/saa7134-input.c |   86 +++-
 drivers/media/video/saa7134/saa7134.h   |   17 +---
 include/media/ir-common.h   |   47 +
 9 files changed, 315 insertions(+), 172 deletions(-)

diff --git a/drivers/media/common/ir-functions.c 
b/drivers/media/common/ir-functions.c
index 9a8dd87..cbf7c05 100644
--- a/drivers/media/common/ir-functions.c
+++ b/drivers/media/common/ir-functions.c
@@ -256,6 +256,112 @@ int ir_decode_biphase(u32 *samples, int count, int low, 
int high)
return value;
 }
 
+/* RC5 decoding stuff, moved from bttv-input.c to share it with
+ * saa7134 */
+
+/* decode raw bit pattern to RC5 code */
+u32 ir_rc5_decode(unsigned int code)
+{
+   unsigned int org_code = code;
+   unsigned int pair;
+   unsigned int rc5 = 0;
+   int i;
+
+   for (i = 0; i  14; ++i) {
+   pair = code  0x3;
+   code = 2;
+
+   rc5 = 1;
+   switch (pair) {
+   case 0:
+   case 2:
+   break;
+   case 1:
+   rc5 |= 1;
+   break;
+   case 3:
+   dprintk(1, ir-common: ir_rc5_decode(%x) bad code\n, 
org_code);
+   return 0;
+   }
+   }
+   dprintk(1, ir-common: code=%x, rc5=%x, start=%x, toggle=%x, 
address=%x, 
+   instr=%x\n, rc5, org_code, RC5_START(rc5),
+   RC5_TOGGLE(rc5), RC5_ADDR(rc5), RC5_INSTR(rc5));
+   return rc5;
+}
+
+void ir_rc5_timer_end(unsigned long data)
+{
+   struct card_ir *ir = (struct card_ir *)data;
+   struct timeval tv;
+   unsigned long current_jiffies, timeout;
+   u32 gap;
+   u32 rc5 = 0;
+
+   /* get time */
+   current_jiffies = jiffies;
+   do_gettimeofday(tv);
+
+   /* avoid overflow with gap 1s */
+   if (tv.tv_sec - ir-base_time.tv_sec  1) {
+   gap = 20;
+   } else {
+   gap = 100 * (tv.tv_sec - ir-base_time.tv_sec) +
+   tv.tv_usec - ir-base_time.tv_usec;
+   }
+
+   /* Allow some timmer jitter (RC5 is ~24ms anyway so this is ok) */
+   if (gap  28000) {
+   dprintk(1, ir-common: spurious timer_end\n);
+   return;
+   }
+
+   ir-active = 0;
+   if (ir-last_bit  20) {
+   /* ignore spurious codes (caused by light/other remotes) */
+   dprintk(1, ir-common: short code: %x\n, ir-code);
+   } else {
+   ir-code = (ir-code  ir-shift_by) | 1;
+   rc5 = ir_rc5_decode(ir-code);
+
+   /* two start bits? */
+   if (RC5_START(rc5) != ir-start) {
+   dprintk(1, ir-common: rc5 start bits invalid: %u\n, 
RC5_START(rc5));
+
+   /* right address? */
+   } else if (RC5_ADDR(rc5) == ir-addr) {
+   u32 toggle = RC5_TOGGLE(rc5);
+   u32 instr = RC5_INSTR(rc5);
+
+   /* Good code, decide if repeat/repress */
+   if (toggle != RC5_TOGGLE(ir-last_rc5) ||
+   instr != RC5_INSTR(ir-last_rc5)) {
+   dprintk(1, ir-common: instruction %x, toggle 
%x\n, instr,
+   toggle);
+   ir_input_nokey(ir-dev, ir-ir);
+   ir_input_keydown(ir-dev, ir-ir, instr,
+instr);
+   }
+
+   /* Set/reset key-up timer */
+   timeout = current_jiffies + (500 + ir-rc5_key_timeout
+ 

V4L/DVB (4962): Add the Composite over S-Video input on the Asus P7131 Dual

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8387c66c7f06842b0635a3749b31448d6637
Commit: 8387c66c7f06842b0635a3749b31448d6637
Parent: 9160723ed620f31bf38332dee02041b1cb4c9967
Author: Hermann Pitton [EMAIL PROTECTED]
AuthorDate: Sun Dec 10 21:08:03 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:12 2007 -0200

V4L/DVB (4962): Add the Composite over S-Video input on the Asus P7131 Dual

This makes a second CVBS input available.

Signed-off-by: Hermann Pitton [EMAIL PROTECTED]
Signed-off-by: Hartmut Hackmann [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/saa7134/saa7134-cards.c |5 +
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/saa7134/saa7134-cards.c 
b/drivers/media/video/saa7134/saa7134-cards.c
index dc45b23..710d20e 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -2469,6 +2469,11 @@ struct saa7134_board saa7134_boards[] = {
.amux = LINE2,
.gpio = 0x020,
},{
+   .name = name_comp2,
+   .vmux = 0,
+   .amux = LINE2,
+   .gpio = 0x020,
+   },{
.name = name_svideo,
.vmux = 8,
.amux = LINE2,
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4981): Update cx2341x documentation.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e12ceaf4962d804320d639faed1da61e2cb85723
Commit: e12ceaf4962d804320d639faed1da61e2cb85723
Parent: 8387c66c7f06842b0635a3749b31448d6637
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 13:06:30 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:13 2007 -0200

V4L/DVB (4981): Update cx2341x documentation.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 .../video4linux/cx2341x/fw-decoder-api.txt |   14 ++
 Documentation/video4linux/cx2341x/fw-memory.txt|2 +-
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/Documentation/video4linux/cx2341x/fw-decoder-api.txt 
b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
index 78bf5f2..15c388b 100644
--- a/Documentation/video4linux/cx2341x/fw-decoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
@@ -32,6 +32,10 @@ Description
playback stops at specified PTS.
 Param[0]
Display 0=last frame, 1=black
+   Note: this takes effect immediately, so if you want to wait for a PTS,
+   then use '0', otherwise the screen goes to black at once.
+   You can call this later (even if there is no playback) with a 1 value
+   to set the screen to black.
 Param[1]
PTS low
 Param[2]
@@ -60,8 +64,12 @@ Param[0]
31   Speed:
 '0' slow
 '1' fast
+   Note: n seems to be limited to 2. Anything higher does not result in
+   faster playback. Instead the host should start dropping frames.
 Param[1]
Direction: 0=forward, 1=reverse
+   Note: to make reverse playback work you have to write full GOPs in
+   reverse order.
 Param[2]
Picture mask:
1=I frames
@@ -69,6 +77,8 @@ Param[2]
7=I, P, B frames
 Param[3]
B frames per GOP (for reverse play only)
+   Note: apparently this does not work. For reverse play I can only make it
+   work by selecting I or I and P frames in the Picture mask.
 Param[4]
Mute audio: 0=disable, 1=enable
 Param[5]
@@ -212,6 +222,7 @@ Description
Select audio mode
 Param[0]
Dual mono mode action
+   0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged
 Param[1]
Stereo mode action:
0=Stereo, 1=Left, 2=Right, 3=Mono, 4=Swap, -1=Unchanged
@@ -225,6 +236,9 @@ Description
Counterpart to API 0xD5
 Param[0]
Event: 0=Audio mode change between stereo and dual channel
+   Event: 3=Decoder started
+   Event: 4=Unknown: goes off 10-15 times per second while decoding.
+   Event: 5=Some sync event: goes off once per frame.
 Param[1]
Notification 0=disabled, 1=enabled
 Param[2]
diff --git a/Documentation/video4linux/cx2341x/fw-memory.txt 
b/Documentation/video4linux/cx2341x/fw-memory.txt
index ef0aad3..0cf2491 100644
--- a/Documentation/video4linux/cx2341x/fw-memory.txt
+++ b/Documentation/video4linux/cx2341x/fw-memory.txt
@@ -125,7 +125,7 @@ Bit
 27 Encoder DMA complete
 26
 25 Decoder copy protect detection event
-24 Decoder audio mode change detection event
+24 Decoder audio mode change detection event (through event notification)
 23
 22 Decoder data request
 21 Decoder I-Frame? done
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4985): Update cx2341x documentation.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=20a919f7960df1c0bf1cb4f637149ed4b6bc9ec3
Commit: 20a919f7960df1c0bf1cb4f637149ed4b6bc9ec3
Parent: e12ceaf4962d804320d639faed1da61e2cb85723
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 22:43:36 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:13 2007 -0200

V4L/DVB (4985): Update cx2341x documentation.

Removed a few unimplemented commands. Added a note for a few fields that are
not implemented in the firmware, and clarified several issues around reverse
playback.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 .../video4linux/cx2341x/fw-decoder-api.txt |   48 +++-
 .../video4linux/cx2341x/fw-encoder-api.txt |2 +-
 2 files changed, 7 insertions(+), 43 deletions(-)

diff --git a/Documentation/video4linux/cx2341x/fw-decoder-api.txt 
b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
index 15c388b..1345d26 100644
--- a/Documentation/video4linux/cx2341x/fw-decoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
@@ -21,7 +21,7 @@ Param[0]
0 based frame number in GOP to begin playback from.
 Param[1]
Specifies the number of muted audio frames to play before normal
-   audio resumes.
+   audio resumes. (This is not implemented in the firmware, leave at 0)
 
 ---
 
@@ -64,7 +64,7 @@ Param[0]
31   Speed:
 '0' slow
 '1' fast
-   Note: n seems to be limited to 2. Anything higher does not result in
+   Note: n is limited to 2. Anything higher does not result in
faster playback. Instead the host should start dropping frames.
 Param[1]
Direction: 0=forward, 1=reverse
@@ -77,15 +77,16 @@ Param[2]
7=I, P, B frames
 Param[3]
B frames per GOP (for reverse play only)
-   Note: apparently this does not work. For reverse play I can only make it
-   work by selecting I or I and P frames in the Picture mask.
+   Note: for reverse playback the Picture Mask should be set to I or I, P.
+   Adding B frames to the mask will result in corrupt video. This field
+   has to be set to the correct value in order to keep the timing correct.
 Param[4]
Mute audio: 0=disable, 1=enable
 Param[5]
Display 0=frame, 1=field
 Param[6]
Specifies the number of muted audio frames to play before normal audio
-   resumes.
+   resumes. (Not implemented in the firmware, leave at 0)
 
 ---
 
@@ -287,43 +288,6 @@ Param[3]
 
 ---
 
-Name   CX2341X_DEC_SET_AUDIO_OUTPUT
-Enum   27/0x1B
-Description
-   Select audio output format
-Param[0]
-   Bitmask:
-0:1  Data size:
- '00' 16 bit
- '01' 20 bit
- '10' 24 bit
-2:7  Unused
-8:9  Mode:
- '00' 2 channels
- '01' 4 channels
- '10' 6 channels
- '11' 6 channels with one line data mode
-  (for left justified MSB first mode, 20 bit only)
-   10:11 Unused
-   12:13 Channel format:
- '00' right justified MSB first mode
- '01' left justified MSB first mode
- '10' I2S mode
-   14:15 Unused
-   16:21 Right justify bit count
-   22:31 Unused
-

-
-Name   CX2341X_DEC_SET_AV_DELAY
-Enum   28/0x1C
-Description
-   Set audio/video delay in 90Khz ticks
-Param[0]
-   0=A/V in sync, negative=audio lags, positive=video lags
-

-
 Name   CX2341X_DEC_SET_PREBUFFERING
 Enum   30/0x1E
 Description
diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt 
b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
index 15df0df..9a57106 100644
--- a/Documentation/video4linux/cx2341x/fw-encoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
@@ -216,7 +216,7 @@ Param[1]
 Name   CX2341X_ENC_SET_3_2_PULLDOWN
 Enum   177/0xB1
 Description
-   3:2 pulldown properties
+   3:2 pulldown properties (This command is not implemented in the 
firmware)
 Param[0]
0=enabled
1=disabled
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4986): Removed unimplemented cx2341x API commands

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75558ab92dc95c3b5a99df7c77e95a6e8484e05c
Commit: 75558ab92dc95c3b5a99df7c77e95a6e8484e05c
Parent: 20a919f7960df1c0bf1cb4f637149ed4b6bc9ec3
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Mon Dec 18 22:52:21 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:13 2007 -0200

V4L/DVB (4986): Removed unimplemented cx2341x API commands

The commands CX2341X_DEC_SET_AUDIO_OUTPUT, CX2341X_DEC_SET_AV_DELAY and
CX2341X_ENC_SET_3_2_PULLDOWN are not implemented in the Conexant firmware.
So these commands are removed. This also means that the 
V4L2_CID_MPEG_VIDEO_PULLDOWN
control in cx2341x.c and pvrusb2-hdw.c is removed.

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 .../video4linux/cx2341x/fw-encoder-api.txt |   10 --
 drivers/media/video/cx2341x.c  |   17 ++---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |3 ---
 include/media/cx2341x.h|4 
 4 files changed, 2 insertions(+), 32 deletions(-)

diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt 
b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
index 9a57106..2412718 100644
--- a/Documentation/video4linux/cx2341x/fw-encoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
@@ -213,16 +213,6 @@ Param[1]
 
 ---
 
-Name   CX2341X_ENC_SET_3_2_PULLDOWN
-Enum   177/0xB1
-Description
-   3:2 pulldown properties (This command is not implemented in the 
firmware)
-Param[0]
-   0=enabled
-   1=disabled
-

-
 Name   CX2341X_ENC_SET_VBI_LINE
 Enum   183/0xB7
 Description
diff --git a/drivers/media/video/cx2341x.c b/drivers/media/video/cx2341x.c
index 2f5ca71..d60cd5e 100644
--- a/drivers/media/video/cx2341x.c
+++ b/drivers/media/video/cx2341x.c
@@ -56,7 +56,6 @@ const u32 cx2341x_mpeg_ctrls[] = {
V4L2_CID_MPEG_VIDEO_B_FRAMES,
V4L2_CID_MPEG_VIDEO_GOP_SIZE,
V4L2_CID_MPEG_VIDEO_GOP_CLOSURE,
-   V4L2_CID_MPEG_VIDEO_PULLDOWN,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
V4L2_CID_MPEG_VIDEO_BITRATE,
V4L2_CID_MPEG_VIDEO_BITRATE_PEAK,
@@ -118,9 +117,6 @@ static int cx2341x_get_ctrl(struct cx2341x_mpeg_params 
*params,
case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:
ctrl-value = params-video_gop_closure;
break;
-   case V4L2_CID_MPEG_VIDEO_PULLDOWN:
-   ctrl-value = params-video_pulldown;
-   break;
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
ctrl-value = params-video_bitrate_mode;
break;
@@ -231,9 +227,6 @@ static int cx2341x_set_ctrl(struct cx2341x_mpeg_params 
*params,
case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:
params-video_gop_closure = ctrl-value;
break;
-   case V4L2_CID_MPEG_VIDEO_PULLDOWN:
-   params-video_pulldown = ctrl-value;
-   break;
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
/* MPEG-1 only allows CBR */
if (params-video_encoding == V4L2_MPEG_VIDEO_ENCODING_MPEG_1 
@@ -679,7 +672,6 @@ void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p)
.video_b_frames = 2,
.video_gop_size = 12,
.video_gop_closure = 1,
-   .video_pulldown = 0,
.video_bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
.video_bitrate = 600,
.video_bitrate_peak = 800,
@@ -783,10 +775,6 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
err = cx2341x_api(priv, func, CX2341X_ENC_SET_GOP_CLOSURE, 1, 
new-video_gop_closure);
if (err) return err;
}
-   if (old == NULL || old-video_pulldown != new-video_pulldown) {
-   err = cx2341x_api(priv, func, CX2341X_ENC_SET_3_2_PULLDOWN, 1, 
new-video_pulldown);
-   if (err) return err;
-   }
if (old == NULL || old-audio_properties != new-audio_properties) {
err = cx2341x_api(priv, func, CX2341X_ENC_SET_AUDIO_PROPERTIES, 
1, new-audio_properties);
if (err) return err;
@@ -888,11 +876,10 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, 
const char *prefix)
printk(, Peak %d, p-video_bitrate_peak);
}
printk(\n);
-   printk(KERN_INFO %s: Video:  GOP Size %d, %d B-Frames, %sGOP Closure, 
%s3:2 Pulldown\n,
+   printk(KERN_INFO %s: Video:  GOP Size %d, %d B-Frames, %sGOP 
Closure\n,
prefix,
p-video_gop_size, p-video_b_frames,
-   p-video_gop_closure ?  : No ,
-   p-video_pulldown ?  : No );
+   p-video_gop_closure ?  : No );

V4L/DVB (4987): Improve cx2341x documentation

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d84e2bdca6e168557639b29c9244cbcf2500fe21
Commit: d84e2bdca6e168557639b29c9244cbcf2500fe21
Parent: 75558ab92dc95c3b5a99df7c77e95a6e8484e05c
Author: Hans Verkuil [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 06:50:18 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:14 2007 -0200

V4L/DVB (4987): Improve cx2341x documentation

Document the program index table format, removed unused interrupt 
documentation
and improve the documentation regarding the audio mode 
(stereo/joint/dual/mono).

Signed-off-by: Hans Verkuil [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 .../video4linux/cx2341x/fw-decoder-api.txt |2 +-
 .../video4linux/cx2341x/fw-encoder-api.txt |   24 ---
 Documentation/video4linux/cx2341x/fw-memory.txt|4 ---
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/Documentation/video4linux/cx2341x/fw-decoder-api.txt 
b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
index 1345d26..8c317b7 100644
--- a/Documentation/video4linux/cx2341x/fw-decoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-decoder-api.txt
@@ -236,7 +236,7 @@ Description
Setup firmware to notify the host about a particular event.
Counterpart to API 0xD5
 Param[0]
-   Event: 0=Audio mode change between stereo and dual channel
+   Event: 0=Audio mode change between mono, (joint) stereo and dual 
channel.
Event: 3=Decoder started
Event: 4=Unknown: goes off 10-15 times per second while decoding.
Event: 5=Some sync event: goes off once per frame.
diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt 
b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
index 2412718..fe02bdb 100644
--- a/Documentation/video4linux/cx2341x/fw-encoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
@@ -322,9 +322,7 @@ Param[0]
'01'=JointStereo
'10'=Dual
'11'=Mono
-   Note: testing seems to indicate that Mono and possibly
-   JointStereo are not working (default to stereo).
-   Dual does work, though.
+   Note: the cx23415 cannot decode Joint Stereo properly.
 
  10:11 Mode Extension used in joint_stereo mode.
In Layer I and II they indicate which subbands are in
@@ -403,16 +401,34 @@ Name  CX2341X_ENC_SET_PGM_INDEX_INFO
 Enum   199/0xC7
 Description
Sets the Program Index Information.
+   The information is stored as follows:
+
+   struct info {
+   u32 length; // Length of this frame
+   u32 offset_low; // Offset in the file of the
+   u32 offset_high;// start of this frame
+   u32 mask1;  // Bits 0-1 are the type mask:
+   // 1=I, 2=P, 4=B
+   u32 pts;// The PTS of the frame
+   u32 mask2;  // Bit 0 is bit 32 of the pts.
+   };
+   u32 table_ptr;
+   struct info index[400];
+
+   The table_ptr is the encoder memory address in the table were
+   *new* entries will be written. Note that this is a ringbuffer,
+   so the table_ptr will wraparound.
 Param[0]
Picture Mask:
0=No index capture
1=I frames
3=I,P frames
7=I,P,B frames
+   (Seems to be ignored, it always indexes I, P and B frames)
 Param[1]
Elements requested (up to 400)
 Result[0]
-   Offset in SDF memory of the table.
+   Offset in the encoder memory of the start of the table.
 Result[1]
Number of allocated elements up to a maximum of Param[1]
 
diff --git a/Documentation/video4linux/cx2341x/fw-memory.txt 
b/Documentation/video4linux/cx2341x/fw-memory.txt
index 0cf2491..d445e45 100644
--- a/Documentation/video4linux/cx2341x/fw-memory.txt
+++ b/Documentation/video4linux/cx2341x/fw-memory.txt
@@ -123,12 +123,8 @@ Bit
 29 Encoder VBI capture
 28 Encoder Video Input Module reset event
 27 Encoder DMA complete
-26
-25 Decoder copy protect detection event
 24 Decoder audio mode change detection event (through event notification)
-23
 22 Decoder data request
-21 Decoder I-Frame? done
 20 Decoder DMA complete
 19 Decoder VBI re-insertion
 18 Decoder DMA err (linked-list bad)
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4989): Saa7134: add support for the Encore ENL-TV

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d1158f469cb2bda369475e2bb622080dace25473
Commit: d1158f469cb2bda369475e2bb622080dace25473
Parent: d84e2bdca6e168557639b29c9244cbcf2500fe21
Author: Steven Walter [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 09:29:09 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:14 2007 -0200

V4L/DVB (4989): Saa7134: add support for the Encore ENL-TV

Add a board definition for the Encore ENL-TV card, and
adds its PCI subdevice to the ID table.

Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/saa7134/saa7134-cards.c |   24 
 drivers/media/video/saa7134/saa7134.h   |1 +
 2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/saa7134/saa7134-cards.c 
b/drivers/media/video/saa7134/saa7134-cards.c
index 710d20e..9d26ab4 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -3188,6 +3188,24 @@ struct saa7134_board saa7134_boards[] = {
.amux   = LINE1,
}},
},
+   [SAA7134_BOARD_ENCORE_ENLTV] = {
+   /* Steven Walter [EMAIL PROTECTED] */
+   .name   = Encore ENLTV,
+   .tuner_type = TUNER_TNF_5335MF,
+   .radio_type = UNSET,
+   .tuner_addr = ADDR_UNSET,
+   .radio_addr = ADDR_UNSET,
+   .inputs = {{
+   .name = name_tv,
+   .vmux = 1,
+   .amux = LINE2,
+   .tv   = 1,
+   },{
+   .name = name_svideo,
+   .vmux = 6,
+   .amux = LINE1,
+   }},
+   },
 };
 
 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3827,6 +3845,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
.subdevice= 0x1172,
.driver_data  = SAA7134_BOARD_CINERGY_HT_PCMCIA,
},{
+   .vendor   = PCI_VENDOR_ID_PHILIPS,
+   .device   = PCI_DEVICE_ID_PHILIPS_SAA7130,
+   .subvendor= PCI_VENDOR_ID_PHILIPS,
+   .subdevice= 0x2342,
+   .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
+   },{
/* --- boards without eeprom + subsystem ID --- */
.vendor   = PCI_VENDOR_ID_PHILIPS,
.device   = PCI_DEVICE_ID_PHILIPS_SAA7134,
diff --git a/drivers/media/video/saa7134/saa7134.h 
b/drivers/media/video/saa7134/saa7134.h
index 73b16b2..6e65fa6 100644
--- a/drivers/media/video/saa7134/saa7134.h
+++ b/drivers/media/video/saa7134/saa7134.h
@@ -232,6 +232,7 @@ struct saa7134_format {
 #define SAA7134_BOARD_VIDEOMATE_DVBT_200A  103
 #define SAA7134_BOARD_HAUPPAUGE_HVR1110104
 #define SAA7134_BOARD_CINERGY_HT_PCMCIA105
+#define SAA7134_BOARD_ENCORE_ENLTV 106
 
 #define SAA7134_MAXBOARDS 8
 #define SAA7134_INPUT_MAX 8
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4993): Updated cardlist to reflect the newly added saa7134 board

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ce700b4e2f4b41f79815ee3a6c4f9b9390b2af36
Commit: ce700b4e2f4b41f79815ee3a6c4f9b9390b2af36
Parent: d1158f469cb2bda369475e2bb622080dace25473
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 09:53:09 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:14 2007 -0200

V4L/DVB (4993): Updated cardlist to reflect the newly added saa7134 board

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 Documentation/video4linux/CARDLIST.saa7134 |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/Documentation/video4linux/CARDLIST.saa7134 
b/Documentation/video4linux/CARDLIST.saa7134
index f6201cc..1a53513 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -104,3 +104,4 @@
 103 - Compro Videomate DVB-T200A
 104 - Hauppauge WinTV-HVR1110 DVB-T/Hybrid [0070:6701]
 105 - Terratec Cinergy HT PCMCIA   [153b:1172]
+106 - Encore ENLTV [1131:2342]
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (4998): [PATCH] DIB3000MC and NOVA T USB2 #2

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e3ab2fdd3f5efe62d266877c53c578fe5b547b31
Commit: e3ab2fdd3f5efe62d266877c53c578fe5b547b31
Parent: ce700b4e2f4b41f79815ee3a6c4f9b9390b2af36
Author: Mario Rossi [EMAIL PROTECTED]
AuthorDate: Wed Dec 20 10:54:30 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:14 2007 -0200

V4L/DVB (4998): [PATCH] DIB3000MC and NOVA T USB2 #2

Second part of the patch to make the autosearch work again with DiB3000P/MC.

Signed-off-by: Mario Rossi [EMAIL PROTECTED]
Signed-off-by: Patrick Boettcher [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/dvb/frontends/dib3000mc.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/dvb/frontends/dib3000mc.c 
b/drivers/media/dvb/frontends/dib3000mc.c
index 23aa75a..054d7e6 100644
--- a/drivers/media/dvb/frontends/dib3000mc.c
+++ b/drivers/media/dvb/frontends/dib3000mc.c
@@ -475,7 +475,7 @@ static void dib3000mc_set_channel_cfg(struct 
dib3000mc_state *state, struct dibx
tmp = ((chan-nfft  0x1)  7) | (chan-guard  5) | (chan-nqam  
3) | chan-vit_alpha;
dib3000mc_write_word(state, 0, tmp);
 
-   dib3000mc_write_word(state, 5, seq);
+   dib3000mc_write_word(state, 5, (1  8) | ((seq  0xf)  4));
 
tmp = (chan-vit_hrch  4) | (chan-vit_select_hp);
if (!chan-vit_hrch || (chan-vit_hrch  chan-vit_select_hp))
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5011): DVB: Remove unneeded void * casts in ttpci/av7110

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d9bdf77296a00538faff95f29bf238857daea2e7
Commit: d9bdf77296a00538faff95f29bf238857daea2e7
Parent: 9d85d776cb6ccc28ac5294a9ac4f6831295f489b
Author: Tobias Klauser [EMAIL PROTECTED]
AuthorDate: Tue Dec 26 07:33:48 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:15 2007 -0200

V4L/DVB (5011): DVB: Remove unneeded void * casts in ttpci/av7110

The patch removes unneeded void * casts for the following (void *) pointers:
- struct file: private_data
- struct dvb_device: priv
- struct dvb_demux: priv
- struct dvb_adapter: priv
The patch also contains some whitespace and coding style cleanups in the
relevant areas.

Signed-off-by: Tobias Klauser [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/dvb/ttpci/av7110.c|   28 +++---
 drivers/media/dvb/ttpci/av7110_av.c |   42 +-
 drivers/media/dvb/ttpci/av7110_ca.c |   22 --
 3 files changed, 45 insertions(+), 47 deletions(-)

diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c
index 366c137..bb213d8 100644
--- a/drivers/media/dvb/ttpci/av7110.c
+++ b/drivers/media/dvb/ttpci/av7110.c
@@ -695,8 +695,8 @@ static void gpioirq(unsigned long data)
 static int dvb_osd_ioctl(struct inode *inode, struct file *file,
 unsigned int cmd, void *parg)
 {
-   struct dvb_device *dvbdev = (struct dvb_device *) file-private_data;
-   struct av7110 *av7110 = (struct av7110 *) dvbdev-priv;
+   struct dvb_device *dvbdev = file-private_data;
+   struct av7110 *av7110 = dvbdev-priv;
 
dprintk(4, %p\n, av7110);
 
@@ -786,7 +786,7 @@ int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, 
u16 ttpid,
 static int StartHWFilter(struct dvb_demux_filter *dvbdmxfilter)
 {
struct dvb_demux_feed *dvbdmxfeed = dvbdmxfilter-feed;
-   struct av7110 *av7110 = (struct av7110 *) dvbdmxfeed-demux-priv;
+   struct av7110 *av7110 = dvbdmxfeed-demux-priv;
u16 buf[20];
int ret, i;
u16 handle;
@@ -835,7 +835,7 @@ static int StartHWFilter(struct dvb_demux_filter 
*dvbdmxfilter)
 
 static int StopHWFilter(struct dvb_demux_filter *dvbdmxfilter)
 {
-   struct av7110 *av7110 = (struct av7110 *) 
dvbdmxfilter-feed-demux-priv;
+   struct av7110 *av7110 = dvbdmxfilter-feed-demux-priv;
u16 buf[3];
u16 answ[2];
int ret;
@@ -871,7 +871,7 @@ static int StopHWFilter(struct dvb_demux_filter 
*dvbdmxfilter)
 static int dvb_feed_start_pid(struct dvb_demux_feed *dvbdmxfeed)
 {
struct dvb_demux *dvbdmx = dvbdmxfeed-demux;
-   struct av7110 *av7110 = (struct av7110 *) dvbdmx-priv;
+   struct av7110 *av7110 = dvbdmx-priv;
u16 *pid = dvbdmx-pids, npids[5];
int i;
int ret = 0;
@@ -914,7 +914,7 @@ static int dvb_feed_start_pid(struct dvb_demux_feed 
*dvbdmxfeed)
 static int dvb_feed_stop_pid(struct dvb_demux_feed *dvbdmxfeed)
 {
struct dvb_demux *dvbdmx = dvbdmxfeed-demux;
-   struct av7110 *av7110 = (struct av7110 *) dvbdmx-priv;
+   struct av7110 *av7110 = dvbdmx-priv;
u16 *pid = dvbdmx-pids, npids[5];
int i;
 
@@ -1103,9 +1103,9 @@ static int dvb_get_stc(struct dmx_demux *demux, unsigned 
int num,
 
/* pointer casting paranoia... */
BUG_ON(!demux);
-   dvbdemux = (struct dvb_demux *) demux-priv;
+   dvbdemux = demux-priv;
BUG_ON(!dvbdemux);
-   av7110 = (struct av7110 *) dvbdemux-priv;
+   av7110 = dvbdemux-priv;
 
dprintk(4, %p\n, av7110);
 
@@ -1137,7 +1137,7 @@ static int dvb_get_stc(struct dmx_demux *demux, unsigned 
int num,
 
 static int av7110_set_tone(struct dvb_frontend* fe, fe_sec_tone_mode_t tone)
 {
-   struct av7110* av7110 = (struct av7110*) fe-dvb-priv;
+   struct av7110* av7110 = fe-dvb-priv;
 
switch (tone) {
case SEC_TONE_ON:
@@ -1197,7 +1197,7 @@ static int start_ts_capture(struct av7110 *budget)
 static int budget_start_feed(struct dvb_demux_feed *feed)
 {
struct dvb_demux *demux = feed-demux;
-   struct av7110 *budget = (struct av7110 *) demux-priv;
+   struct av7110 *budget = demux-priv;
int status;
 
dprintk(2, av7110: %p\n, budget);
@@ -1212,7 +1212,7 @@ static int budget_start_feed(struct dvb_demux_feed *feed)
 static int budget_stop_feed(struct dvb_demux_feed *feed)
 {
struct dvb_demux *demux = feed-demux;
-   struct av7110 *budget = (struct av7110 *) demux-priv;
+   struct av7110 *budget = demux-priv;
int status;
 
dprintk(2, budget: %p\n, budget);
@@ -1551,7 +1551,7 @@ static int get_firmware(struct av7110* av7110)
 
 static int alps_bsrv2_tuner_set_params(struct dvb_frontend* fe, struct 
dvb_frontend_parameters *params)
 {
-   struct av7110* av7110 

V4L/DVB (5012a): Remove some unused code from kernel mainstream

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=95efa03bd66511ca9fb4ebc528211166ac842d27
Commit: 95efa03bd66511ca9fb4ebc528211166ac842d27
Parent: d9bdf77296a00538faff95f29bf238857daea2e7
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Wed Feb 14 22:55:53 2007 -0200
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:15 2007 -0200

V4L/DVB (5012a): Remove some unused code from kernel mainstream


There are some long time unused code under some media driver source files.
There's no need of keeping it at mainstream.
Those unused code will remain available at V4L/DVB master tree and also at
kernel history.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/bt8xx/bttv-cards.c  |   22 --
 drivers/media/video/cx88/cx88-tvaudio.c |   49 ---
 2 files changed, 0 insertions(+), 71 deletions(-)

diff --git a/drivers/media/video/bt8xx/bttv-cards.c 
b/drivers/media/video/bt8xx/bttv-cards.c
index 21ebe8f..3b653c9 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -578,14 +578,9 @@ struct tvcard bttv_tvcards[] = {
.svhs   = 2,
.gpiomask   = 0x01fe00,
.muxsel = { 2, 3, 1, 1 },
-   #if 0
-   /* old */
-   .gpiomux= { 0x01c000, 0, 0x018000, 0x014000, 0x002000 },
-   #else
/* 2003-10-20 by Anton A. Arapov [EMAIL PROTECTED] */
.gpiomux= { 0x001e00, 0, 0x018000, 0x014000 },
.gpiomute   = 0x002000,
-   #endif
.needs_tvaudio  = 1,
.pll= PLL_28,
.tuner_type = -1,
@@ -894,15 +889,10 @@ struct tvcard bttv_tvcards[] = {
.tuner  = 0,
.svhs   = 2,
.muxsel = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid 
over SVid connector */
-   #if 0
-   .gpiomask   = 0xc33000,
-   .gpiomux= { 0x422000,0x1000,0x,0x62,0x80 },
-   #else
/* Alexander Varakin [EMAIL PROTECTED] [stereo version] */
.gpiomask   = 0xb33000,
.gpiomux= { 0x122000,0x1000,0x,0x62 },
.gpiomute   = 0x80,
-   #endif
/* Audio Routing for WinFast 2000 XP (no tv stereo !)
gpio23 -- hef4052:nEnable (0x80)
gpio12 -- hef4052:A1
@@ -1937,11 +1927,6 @@ struct tvcard bttv_tvcards[] = {
.video_inputs   = 4,
.audio_inputs   = 1,
.tuner  = -1,
-   #if 0 /* TODO ... */
-   .svhs   = OSPREY540_SVID_ANALOG,
-   .muxsel = {   [OSPREY540_COMP_ANALOG] = 2,
-   [OSPREY540_SVID_ANALOG] = 3, },
-   #endif
.pll= PLL_28,
.tuner_type = -1,
.tuner_addr = ADDR_UNSET,
@@ -1949,10 +1934,6 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
-   #if 0 /* TODO ... */
-   .muxsel_hook= osprey_540_muxsel,
-   .picture_hook   = osprey_540_set_picture,
-   #endif
},
 
/*  card 0x5C -- */
@@ -2627,9 +2608,6 @@ struct tvcard bttv_tvcards[] = {
.tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET,
.has_radio  = 0,
-   #if 0
-   .has_remote = 1,
-   #endif
},
[BTTV_BOARD_SUPER_TV] = {
/* Rick C [EMAIL PROTECTED] */
diff --git a/drivers/media/video/cx88/cx88-tvaudio.c 
b/drivers/media/video/cx88/cx88-tvaudio.c
index 063df03..97ef421 100644
--- a/drivers/media/video/cx88/cx88-tvaudio.c
+++ b/drivers/media/video/cx88/cx88-tvaudio.c
@@ -797,55 +797,6 @@ void cx88_get_stereo(struct cx88_core *core, struct 
v4l2_tuner *t)
Add some code here later.
 */
 
-# if 0
-   t-capability = V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_SAP |
-   V4L2_TUNER_CAP_LANG1 | V4L2_TUNER_CAP_LANG2;
-   t-rxsubchans = V4L2_TUNER_SUB_MONO;
-   t-audmode = V4L2_TUNER_MODE_MONO;
-
-   switch (core-tvaudio) {
-   case WW_BTSC:
-   t-capability = V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_SAP;
-   t-rxsubchans = V4L2_TUNER_SUB_STEREO;
-   if (1 == pilot) {
-   /* SAP */
-   t-rxsubchans |= V4L2_TUNER_SUB_SAP;
-   }
-   break;
-   case WW_A2_BG:
-   case WW_A2_DK:
-   case WW_A2_M:
-   if (1 == pilot) {
-   /* 

V4L/DVB (5018): Make usbvision_rvfree() static

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4a06b538d6c7c1713d759f79b4fbd1d91d4932ca
Commit: 4a06b538d6c7c1713d759f79b4fbd1d91d4932ca
Parent: c408a6f673e8fb0b67c81fc9cb29414265c1e6c1
Author: Adrian Bunk [EMAIL PROTECTED]
AuthorDate: Fri Dec 29 09:57:26 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:16 2007 -0200

V4L/DVB (5018): Make usbvision_rvfree() static

usbvision_rvfree() can now become static.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-core.c |2 +-
 drivers/media/video/usbvision/usbvision.h  |1 -
 2 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-core.c 
b/drivers/media/video/usbvision/usbvision-core.c
index 901f664..42f495c 100644
--- a/drivers/media/video/usbvision/usbvision-core.c
+++ b/drivers/media/video/usbvision/usbvision-core.c
@@ -138,7 +138,7 @@ static void *usbvision_rvmalloc(unsigned long size)
return mem;
 }
 
-void usbvision_rvfree(void *mem, unsigned long size)
+static void usbvision_rvfree(void *mem, unsigned long size)
 {
unsigned long adr;
 
diff --git a/drivers/media/video/usbvision/usbvision.h 
b/drivers/media/video/usbvision/usbvision.h
index e2bcaba..a316871 100644
--- a/drivers/media/video/usbvision/usbvision.h
+++ b/drivers/media/video/usbvision/usbvision.h
@@ -486,7 +486,6 @@ int usbvision_init_i2c(struct usb_usbvision *usbvision);
 void call_i2c_clients(struct usb_usbvision *usbvision, unsigned int cmd,void 
*arg);
 
 /* defined in usbvision-core.c  */
-void usbvision_rvfree(void *mem, unsigned long size);
 int usbvision_read_reg(struct usb_usbvision *usbvision, unsigned char reg);
 int usbvision_write_reg(struct usb_usbvision *usbvision, unsigned char reg,
unsigned char value);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5017): DVB: fix compile error

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c408a6f673e8fb0b67c81fc9cb29414265c1e6c1
Commit: c408a6f673e8fb0b67c81fc9cb29414265c1e6c1
Parent: c36c459a5530da8869a4de832188cdcb75b60359
Author: Adrian Bunk [EMAIL PROTECTED]
AuthorDate: Thu Dec 28 12:47:47 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:16 2007 -0200

V4L/DVB (5017): DVB: fix compile error

This patch fixes the following compile error:
--  snip  --
...
  LD  drivers/media/video/built-in.o
drivers/media/video/saa7134/built-in.o:(.data+0x85ec): multiple definition 
of `ir_rc5_remote_gap'
drivers/media/video/bt8xx/built-in.o:(.data+0x734c): first defined here
drivers/media/video/saa7134/built-in.o:(.data+0x85f0): multiple definition 
of `ir_rc5_key_timeout'
drivers/media/video/bt8xx/built-in.o:(.data+0x7350): first defined here
make[4]: *** [drivers/media/video/built-in.o] Error 1
--  snip  --
Since this variables were needlessly global, this patch implements the
trivial fix of making them static.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/bt8xx/bttv-input.c  |4 ++--
 drivers/media/video/saa7134/saa7134-input.c |4 ++--
 include/media/ir-common.h   |3 ---
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/media/video/bt8xx/bttv-input.c 
b/drivers/media/video/bt8xx/bttv-input.c
index 14c07c6..825161b 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -36,9 +36,9 @@ module_param(repeat_delay, int, 0644);
 static int repeat_period = 33;
 module_param(repeat_period, int, 0644);
 
-int ir_rc5_remote_gap = 885;
+static int ir_rc5_remote_gap = 885;
 module_param(ir_rc5_remote_gap, int, 0644);
-int ir_rc5_key_timeout = 200;
+static int ir_rc5_key_timeout = 200;
 module_param(ir_rc5_key_timeout, int, 0644);
 
 #define DEVNAME bttv-input
diff --git a/drivers/media/video/saa7134/saa7134-input.c 
b/drivers/media/video/saa7134/saa7134-input.c
index 1d0dd7e..46c583f 100644
--- a/drivers/media/video/saa7134/saa7134-input.c
+++ b/drivers/media/video/saa7134/saa7134-input.c
@@ -40,9 +40,9 @@ static int pinnacle_remote = 0;
 module_param(pinnacle_remote, int, 0644);/* Choose Pinnacle PCTV remote */
 MODULE_PARM_DESC(pinnacle_remote, Specify Pinnacle PCTV remote: 0=coloured, 
1=grey (defaults to 0));
 
-int ir_rc5_remote_gap = 885;
+static int ir_rc5_remote_gap = 885;
 module_param(ir_rc5_remote_gap, int, 0644);
-int ir_rc5_key_timeout = 115;
+static int ir_rc5_key_timeout = 115;
 module_param(ir_rc5_key_timeout, int, 0644);
 
 #define dprintk(fmt, arg...)   if (ir_debug) \
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 04201f7..0a75c0f 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -36,9 +36,6 @@
 #define IR_KEYCODE(tab,code)   (((unsigned)code  IR_KEYTAB_SIZE) \
 ? tab[code] : KEY_RESERVED)
 
-extern int ir_rc5_remote_gap;
-extern int ir_rc5_key_timeout;
-
 #define RC5_START(x)   (((x)12)3)
 #define RC5_TOGGLE(x)  (((x)11)1)
 #define RC5_ADDR(x)(((x)6)31)
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB: MAINTAINERS: tag pvrusb2 list as subscribers-only

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=16e9495d8bd5ec8ef3c1a32cd720542b1cc2b298
Commit: 16e9495d8bd5ec8ef3c1a32cd720542b1cc2b298
Parent: 4a06b538d6c7c1713d759f79b4fbd1d91d4932ca
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Jan 3 18:08:06 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:17 2007 -0200

V4L/DVB: MAINTAINERS: tag pvrusb2 list as subscribers-only

Posting to the pvrusb2 mailing list is for subscribers only.  Anyone can
subscribe of course.  This is done purely to keep spammers and similar pond
scum from bothering the subscribers of the list.  This patch marks the
pvrusb2 list tag in MAINTAINERS to reflect this situation.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 MAINTAINERS |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 96d46bc..c268b51 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2748,7 +2748,7 @@ S:Supported
 PVRUSB2 VIDEO4LINUX DRIVER
 P: Mike Isely
 M: [EMAIL PROTECTED]
-L: pvrusb2@isely.net
+L: pvrusb2@isely.net   (subscribers-only)
 L: video4linux-list@redhat.com
 W: http://www.isely.net/pvrusb2/
 S: Maintained
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5026): Pvrusb2-hdw kfree cleanup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=22071a42a1b44ae90d232f4bd5d6d3f80ad4eaa2
Commit: 22071a42a1b44ae90d232f4bd5d6d3f80ad4eaa2
Parent: 16e9495d8bd5ec8ef3c1a32cd720542b1cc2b298
Author: Mariusz Kozlowski [EMAIL PROTECTED]
AuthorDate: Sun Jan 7 10:33:39 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:17 2007 -0200

V4L/DVB (5026): Pvrusb2-hdw kfree cleanup

Removes redundant argument check for kfree().

Signed-off-by: Mariusz Kozlowski [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |   16 
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index c37f8e1..503255c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1926,10 +1926,10 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface 
*intf,
if (hdw) {
usb_free_urb(hdw-ctl_read_urb);
usb_free_urb(hdw-ctl_write_urb);
-   if (hdw-ctl_read_buffer) kfree(hdw-ctl_read_buffer);
-   if (hdw-ctl_write_buffer) kfree(hdw-ctl_write_buffer);
-   if (hdw-controls) kfree(hdw-controls);
-   if (hdw-mpeg_ctrl_info) kfree(hdw-mpeg_ctrl_info);
+   kfree(hdw-ctl_read_buffer);
+   kfree(hdw-ctl_write_buffer);
+   kfree(hdw-controls);
+   kfree(hdw-mpeg_ctrl_info);
kfree(hdw);
}
return NULL;
@@ -1994,10 +1994,10 @@ void pvr2_hdw_destroy(struct pvr2_hdw *hdw)
unit_pointers[hdw-unit_number] = NULL;
}
} while (0); up(pvr2_unit_sem);
-   if (hdw-controls) kfree(hdw-controls);
-   if (hdw-mpeg_ctrl_info) kfree(hdw-mpeg_ctrl_info);
-   if (hdw-std_defs) kfree(hdw-std_defs);
-   if (hdw-std_enum_names) kfree(hdw-std_enum_names);
+   kfree(hdw-controls);
+   kfree(hdw-mpeg_ctrl_info);
+   kfree(hdw-std_defs);
+   kfree(hdw-std_enum_names);
kfree(hdw);
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5027): Cpia module_put cleanup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ac3289893052c8e6149a8e93b500e2e4c7d9d418
Commit: ac3289893052c8e6149a8e93b500e2e4c7d9d418
Parent: 22071a42a1b44ae90d232f4bd5d6d3f80ad4eaa2
Author: Mariusz Kozlowski [EMAIL PROTECTED]
AuthorDate: Sun Jan 7 10:36:24 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:17 2007 -0200

V4L/DVB (5027): Cpia module_put cleanup

No need for redundant argument check for module_put()

Signed-off-by: Mariusz Kozlowski [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cpia.c |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/cpia.c b/drivers/media/video/cpia.c
index 7e8d5ef..735a52a 100644
--- a/drivers/media/video/cpia.c
+++ b/drivers/media/video/cpia.c
@@ -3153,8 +3153,7 @@ static int reset_camera(struct cam_data *cam)
 
 static void put_cam(struct cpia_camera_ops* ops)
 {
-   if (ops-owner)
-   module_put(ops-owner);
+   module_put(ops-owner);
 }
 
 /* - V4L interface - */
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5028): Tvmixer module_put cleanup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cededbfcbc31230c1717a7ed27ff6cf82734e568
Commit: cededbfcbc31230c1717a7ed27ff6cf82734e568
Parent: ac3289893052c8e6149a8e93b500e2e4c7d9d418
Author: Mariusz Kozlowski [EMAIL PROTECTED]
AuthorDate: Sun Jan 7 10:39:44 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:18 2007 -0200

V4L/DVB (5028): Tvmixer module_put cleanup

Removes redundant argument check for module_put()

Signed-off-by: Mariusz Kozlowski [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/tvmixer.c |3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/tvmixer.c b/drivers/media/video/tvmixer.c
index 7ea9132..3ae5a9c 100644
--- a/drivers/media/video/tvmixer.c
+++ b/drivers/media/video/tvmixer.c
@@ -212,8 +212,7 @@ static int tvmixer_release(struct inode *inode, struct file 
*file)
return -ENODEV;
}
 
-   if (client-adapter-owner)
-   module_put(client-adapter-owner);
+   module_put(client-adapter-owner);
return 0;
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5025): Cleanup: switch to using msecs_to_jiffies() on bttv

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c19049568117848a209185a61d18971e3a856bd8
Commit: c19049568117848a209185a61d18971e3a856bd8
Parent: cededbfcbc31230c1717a7ed27ff6cf82734e568
Author: Dmitry Torokhov [EMAIL PROTECTED]
AuthorDate: Tue Jan 2 03:29:48 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:18 2007 -0200

V4L/DVB (5025): Cleanup: switch to using msecs_to_jiffies() on bttv

PS.: Part of the changes at the original patch were removed due to the 
changes
done at commit 52c14e794f6ce345343a6b8fc98ea4e0ba2dfce4

Signed-off-by: Dmitry Torokhov [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/bt8xx/bttv-input.c |   14 +-
 1 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/media/video/bt8xx/bttv-input.c 
b/drivers/media/video/bt8xx/bttv-input.c
index 825161b..6f74c80 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -87,11 +87,9 @@ static void bttv_input_timer(unsigned long data)
 {
struct bttv *btv = (struct bttv*)data;
struct card_ir *ir = btv-remote;
-   unsigned long timeout;
 
ir_handle_key(btv);
-   timeout = jiffies + (ir-polling * HZ / 1000);
-   mod_timer(ir-timer, timeout);
+   mod_timer(ir-timer, jiffies + msecs_to_jiffies(ir-polling));
 }
 
 /* ---*/
@@ -102,7 +100,7 @@ static int bttv_rc5_irq(struct bttv *btv)
struct timeval tv;
u32 gpio;
u32 gap;
-   unsigned long current_jiffies, timeout;
+   unsigned long current_jiffies;
 
/* read gpio port */
gpio = bttv_gpio_read(btv-c);
@@ -139,8 +137,8 @@ static int bttv_rc5_irq(struct bttv *btv)
ir-base_time = tv;
ir-last_bit = 0;
 
-   timeout = current_jiffies + (500 + 30 * HZ) / 1000;
-   mod_timer(ir-timer_end, timeout);
+   mod_timer(ir-timer_end,
+ current_jiffies + msecs_to_jiffies(30));
}
 
/* toggle GPIO pin 4 to reset the irq */
@@ -154,9 +152,7 @@ static int bttv_rc5_irq(struct bttv *btv)
 static void bttv_ir_start(struct bttv *btv, struct card_ir *ir)
 {
if (ir-polling) {
-   init_timer(ir-timer);
-   ir-timer.function = bttv_input_timer;
-   ir-timer.data = (unsigned long)btv;
+   setup_timer(ir-timer, bttv_input_timer, (unsigned long)btv);
ir-timer.expires  = jiffies + HZ;
add_timer(ir-timer);
} else if (ir-rc5_gpio) {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5032): Improves some USBVision info messages

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=de6a1b8edc48155249896f2600398e139f4860c6
Commit: de6a1b8edc48155249896f2600398e139f4860c6
Parent: c19049568117848a209185a61d18971e3a856bd8
Author: Dwaine Garden [EMAIL PROTECTED]
AuthorDate: Sun Jan 7 21:13:55 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:18 2007 -0200

V4L/DVB (5032): Improves some USBVision info messages

Replaces the info statements with printk(KERN_INFO statements.
This will cut down on the useless information which is showing up
 in the kernel messages log file.

Signed-off-by: Dwaine P. Garden [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/usbvision/usbvision-video.c |   16 
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/video/usbvision/usbvision-video.c 
b/drivers/media/video/usbvision/usbvision-video.c
index af33653..82c3976 100644
--- a/drivers/media/video/usbvision/usbvision-video.c
+++ b/drivers/media/video/usbvision/usbvision-video.c
@@ -489,7 +489,7 @@ static int usbvision_v4l2_close(struct inode *inode, struct 
file *file)
up(usbvision-lock);
 
if (usbvision-remove_pending) {
-   info(%s: Final disconnect, __FUNCTION__);
+   printk(KERN_INFO %s: Final disconnect\n, __FUNCTION__);
usbvision_release(usbvision);
}
 
@@ -1285,7 +1285,7 @@ static int usbvision_radio_close(struct inode *inode, 
struct file *file)
up(usbvision-lock);
 
if (usbvision-remove_pending) {
-   info(%s: Final disconnect, __FUNCTION__);
+   printk(KERN_INFO %s: Final disconnect\n, __FUNCTION__);
usbvision_release(usbvision);
}
 
@@ -1611,7 +1611,7 @@ static int __devinit usbvision_register_video(struct 
usb_usbvision *usbvision)
if (video_register_device(usbvision-vdev, VFL_TYPE_GRABBER, 
video_nr)0) {
goto err_exit;
}
-   info(USBVision[%d]: registered USBVision Video device /dev/video%d 
[v4l2], usbvision-nr,usbvision-vdev-minor  0x1f);
+   printk(KERN_INFO USBVision[%d]: registered USBVision Video device 
/dev/video%d [v4l2]\n, usbvision-nr,usbvision-vdev-minor  0x1f);
 
// Radio Device:
if (usbvision_device_data[usbvision-DevModel].Radio) {
@@ -1623,7 +1623,7 @@ static int __devinit usbvision_register_video(struct 
usb_usbvision *usbvision)
if (video_register_device(usbvision-rdev, VFL_TYPE_RADIO, 
radio_nr)0) {
goto err_exit;
}
-   info(USBVision[%d]: registered USBVision Radio device 
/dev/radio%d [v4l2], usbvision-nr, usbvision-rdev-minor  0x1f);
+   printk(KERN_INFO USBVision[%d]: registered USBVision Radio 
device /dev/radio%d [v4l2]\n, usbvision-nr, usbvision-rdev-minor  0x1f);
}
// vbi Device:
if (usbvision_device_data[usbvision-DevModel].vbi) {
@@ -1634,7 +1634,7 @@ static int __devinit usbvision_register_video(struct 
usb_usbvision *usbvision)
if (video_register_device(usbvision-vbi, VFL_TYPE_VBI, 
vbi_nr)0) {
goto err_exit;
}
-   info(USBVision[%d]: registered USBVision VBI device /dev/vbi%d 
[v4l2] (Not Working Yet!), usbvision-nr,usbvision-vbi-minor  0x1f);
+   printk(KERN_INFO USBVision[%d]: registered USBVision VBI 
device /dev/vbi%d [v4l2] (Not Working Yet!)\n, 
usbvision-nr,usbvision-vbi-minor  0x1f);
}
// all done
return 0;
@@ -1783,7 +1783,7 @@ static int __devinit usbvision_probe(struct usb_interface 
*intf, const struct us
continue;
}
 
-   info(%s: %s found, __FUNCTION__, 
usbvision_device_data[model].ModelString);
+   printk(KERN_INFO %s: %s found\n, __FUNCTION__, 
usbvision_device_data[model].ModelString);
break;
}
 
@@ -1895,7 +1895,7 @@ static void __devexit usbvision_disconnect(struct 
usb_interface *intf)
up(usbvision-lock);
 
if (usbvision-user) {
-   info(%s: In use, disconnect pending, __FUNCTION__);
+   printk(KERN_INFO %s: In use, disconnect pending\n, 
__FUNCTION__);
wake_up_interruptible(usbvision-wait_frame);
wake_up_interruptible(usbvision-wait_stream);
}
@@ -2061,7 +2061,7 @@ static int __init usbvision_init(void)
errCode = usb_register(usbvision_driver);
 
if (errCode == 0) {
-   info(DRIVER_DESC  :  USBVISION_VERSION_STRING);
+   printk(KERN_INFO DRIVER_DESC  :  USBVISION_VERSION_STRING 
\n);
PDEBUG(DBG_PROBE, success);
}
return errCode;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More 

V4L/DVB (5061): Bt8xx: add support for Ultraview DVB-T Lite

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=19790db00bb7ff4d6621b82933afb3423586644e
Commit: 19790db00bb7ff4d6621b82933afb3423586644e
Parent: de6a1b8edc48155249896f2600398e139f4860c6
Author: Michael Krufky [EMAIL PROTECTED]
AuthorDate: Sun Jan 7 22:12:22 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:19 2007 -0200

V4L/DVB (5061): Bt8xx: add support for Ultraview DVB-T Lite

Ultraview DVB-T Lite is a clone of DViCO FusionHDTV DVB-T Lite

Signed-off-by: Michael Krufky [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 Documentation/video4linux/CARDLIST.bttv |2 +-
 drivers/media/dvb/bt8xx/bt878.c |1 +
 drivers/media/video/bt8xx/bttv-cards.c  |1 +
 sound/pci/bt87x.c   |1 +
 4 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/Documentation/video4linux/CARDLIST.bttv 
b/Documentation/video4linux/CARDLIST.bttv
index 4efa464..fc2fe9b 100644
--- a/Documentation/video4linux/CARDLIST.bttv
+++ b/Documentation/video4linux/CARDLIST.bttv
@@ -126,7 +126,7 @@
 125 - MATRIX Vision Sigma-SQ
 126 - MATRIX Vision Sigma-SLC
 127 - APAC Viewcomp 878(AMAX)
-128 - DViCO FusionHDTV DVB-T Lite [18ac:db10]
+128 - DViCO FusionHDTV DVB-T Lite 
[18ac:db10,18ac:db11]
 129 - V-Gear MyVCD
 130 - Super TV Tuner
 131 - Tibet Systems 'Progress DVR' CS16
diff --git a/drivers/media/dvb/bt8xx/bt878.c b/drivers/media/dvb/bt8xx/bt878.c
index 329a51c..83b090e 100644
--- a/drivers/media/dvb/bt8xx/bt878.c
+++ b/drivers/media/dvb/bt8xx/bt878.c
@@ -390,6 +390,7 @@ static struct cards card_list[] __devinitdata = {
{ 0xfc00270f, BTTV_BOARD_TWINHAN_DST,   ChainTech 
digitop DST-1000 DVB-S },
{ 0x07711461, BTTV_BOARD_AVDVBT_771,AVermedia 
AverTV DVB-T 771 },
{ 0xdb1018ac, BTTV_BOARD_DVICO_DVBT_LITE,   DViCO 
FusionHDTV DVB-T Lite },
+   { 0xdb1118ac, BTTV_BOARD_DVICO_DVBT_LITE,   Ultraview 
DVB-T Lite },
{ 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE,   DViCO 
FusionHDTV 5 Lite },
{ 0x20007063, BTTV_BOARD_PC_HDTV,   pcHDTV HD-2000 
TV },
{ 0x00261822, BTTV_BOARD_TWINHAN_DST,   DNTV Live! 
Mini },
diff --git a/drivers/media/video/bt8xx/bttv-cards.c 
b/drivers/media/video/bt8xx/bttv-cards.c
index 3b653c9..6addc42 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -307,6 +307,7 @@ static struct CARD {
{ 0x07711461, BTTV_BOARD_AVDVBT_771,AVermedia AverTV DVB-T 771 },
{ 0x07611461, BTTV_BOARD_AVDVBT_761,AverMedia AverTV DVB-T 761 },
{ 0xdb1018ac, BTTV_BOARD_DVICO_DVBT_LITE,DViCO FusionHDTV DVB-T 
Lite },
+   { 0xdb1118ac, BTTV_BOARD_DVICO_DVBT_LITE,Ultraview DVB-T Lite },
{ 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE,DViCO FusionHDTV 
5 Lite },
{ 0x00261822, BTTV_BOARD_TWINHAN_DST,   DNTV Live! Mini },
 
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
index c3f3da2..e9b029e 100644
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -804,6 +804,7 @@ static struct {
{0x1822, 0x0001}, /* Twinhan VisionPlus DVB-T */
{0x18ac, 0xd500}, /* DVICO FusionHDTV 5 Lite */
{0x18ac, 0xdb10}, /* DVICO FusionHDTV DVB-T Lite */
+   {0x18ac, 0xdb11}, /* Ultraview DVB-T Lite */
{0x270f, 0xfc00}, /* Chaintech Digitop DST-1000 DVB-S */
{0x7063, 0x2000}, /* pcHDTV HD-2000 TV */
 };
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5063): ZC0301 driver updates.

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7e3a0660700ad47ee6e296fe7090d771becfcf96
Commit: 7e3a0660700ad47ee6e296fe7090d771becfcf96
Parent: f327ebbd004fb2f08291ca4c6637f5f27319683c
Author: Luca Risolia [EMAIL PROTECTED]
AuthorDate: Mon Jan 8 11:34:35 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:19 2007 -0200

V4L/DVB (5063): ZC0301 driver updates.

- Implement audio ioctl's and VIDIOC_ENUM_FRAMESIZES
- Documentation updates
- Generic improvements

Signed-off-by: Luca Risolia [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 Documentation/video4linux/zc0301.txt  |   10 ++--
 drivers/media/video/zc0301/zc0301.h   |4 +-
 drivers/media/video/zc0301/zc0301_core.c  |   55 +
 drivers/media/video/zc0301/zc0301_pas202bcb.c |4 +-
 drivers/media/video/zc0301/zc0301_pb0330.c|4 +-
 drivers/media/video/zc0301/zc0301_sensor.h|   12 +++---
 6 files changed, 64 insertions(+), 25 deletions(-)

diff --git a/Documentation/video4linux/zc0301.txt 
b/Documentation/video4linux/zc0301.txt
index f406f5e..befdfda 100644
--- a/Documentation/video4linux/zc0301.txt
+++ b/Documentation/video4linux/zc0301.txt
@@ -23,7 +23,7 @@ Index
 
 1. Copyright
 
-Copyright (C) 2006 by Luca Risolia [EMAIL PROTECTED]
+Copyright (C) 2006-2007 by Luca Risolia [EMAIL PROTECTED]
 
 
 2. Disclaimer
@@ -125,8 +125,9 @@ And finally:
 6. Module loading
 =
 To use the driver, it is necessary to load the zc0301 module into memory
-after every other module required: videodev, usbcore and, depending on
-the USB host controller you have, ehci-hcd, uhci-hcd or ohci-hcd.
+after every other module required: videodev, v4l2_common, compat_ioctl32,
+usbcore and, depending on the USB host controller you have, ehci-hcd,
+uhci-hcd or ohci-hcd.
 
 Loading can be done as shown below:
 
@@ -211,12 +212,11 @@ Vendor ID  Product ID
 0x041e 0x4036
 0x041e 0x403a
 0x0458 0x7007
-0x0458 0x700C
+0x0458 0x700c
 0x0458 0x700f
 0x046d 0x08ae
 0x055f 0xd003
 0x055f 0xd004
-0x046d 0x08ae
 0x0ac8 0x0301
 0x0ac8 0x301b
 0x0ac8 0x303b
diff --git a/drivers/media/video/zc0301/zc0301.h 
b/drivers/media/video/zc0301/zc0301.h
index b9c93b8..710f12e 100644
--- a/drivers/media/video/zc0301/zc0301.h
+++ b/drivers/media/video/zc0301/zc0301.h
@@ -1,7 +1,7 @@
 /***
- * V4L2 driver for ZC0301 Image Processor and Control Chip *
+ * V4L2 driver for ZC0301[P] Image Processor and Control Chip  *
  * *
- * Copyright (C) 2006 by Luca Risolia [EMAIL PROTECTED]   *
+ * Copyright (C) 2006-2007 by Luca Risolia [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*
diff --git a/drivers/media/video/zc0301/zc0301_core.c 
b/drivers/media/video/zc0301/zc0301_core.c
index 8da7f15..f112055 100644
--- a/drivers/media/video/zc0301/zc0301_core.c
+++ b/drivers/media/video/zc0301/zc0301_core.c
@@ -1,7 +1,7 @@
 /***
  * Video4Linux2 driver for ZC0301[P] Image Processor and Control Chip  *
  * *
- * Copyright (C) 2006 by Luca Risolia [EMAIL PROTECTED]   *
+ * Copyright (C) 2006-2007 by Luca Risolia [EMAIL PROTECTED]  *
  * *
  * Informations about the chip internals needed to enable the I2C protocol *
  * have been taken from the documentation of the ZC030x Video4Linux1   *
@@ -52,8 +52,8 @@
 #define ZC0301_MODULE_AUTHOR  (C) 2006 Luca Risolia
 #define ZC0301_AUTHOR_EMAIL   [EMAIL PROTECTED]
 #define ZC0301_MODULE_LICENSE GPL
-#define ZC0301_MODULE_VERSION 1:1.05
-#define ZC0301_MODULE_VERSION_CODE  KERNEL_VERSION(1, 0, 5)
+#define ZC0301_MODULE_VERSION 1:1.07
+#define ZC0301_MODULE_VERSION_CODE  KERNEL_VERSION(1, 1, 7)
 
 /*/
 
@@ -89,7 +89,7 @@ MODULE_PARM_DESC(force_munmap,
 \ndetected camera.
 \n 0 = do not force memory unmapping
 \n 1 = force memory unmapping (save memory)
-\nDefault value is __MODULE_STRING(SN9C102_FORCE_MUNMAP).
+\nDefault value is __MODULE_STRING(ZC0301_FORCE_MUNMAP).
 \n);
 
 static unsigned int frame_timeout[] = {[0 ... ZC0301_MAX_DEVICES-1] =
@@ -136,7 +136,8 @@ zc0301_request_buffers(struct zc0301_device* cam, u32 count,
 

V4L/DVB (5068): Fix authorship references

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=43db48d3d2f6326c571984b7b30ab355596bb3cc
Commit: 43db48d3d2f6326c571984b7b30ab355596bb3cc
Parent: 2656312724d97ebc2e267e0a9740d51ad7aa9a04
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Tue Jan 9 11:20:59 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:20 2007 -0200

V4L/DVB (5068): Fix authorship references

Bill Dirks asked me to update his entries at kernel files, since
he change his e-mail.
I've also updated a few web broken links or obsolete info to the curent
sites where V4L drivers and API are being discussed currently.

CC: Bill Dirks [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 Documentation/video4linux/CQcam.txt |6 +++---
 Documentation/video4linux/Zoran |4 ++--
 drivers/media/video/v4l1-compat.c   |2 +-
 drivers/media/video/v4l2-common.c   |2 +-
 include/linux/videodev2.h   |2 +-
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/Documentation/video4linux/CQcam.txt 
b/Documentation/video4linux/CQcam.txt
index ade8651..04986ef 100644
--- a/Documentation/video4linux/CQcam.txt
+++ b/Documentation/video4linux/CQcam.txt
@@ -197,10 +197,10 @@ Use the ../../Maintainers file, particularly the  VIDEO 
FOR LINUX and PARALLEL
 PORT SUPPORT sections
 
 The video4linux page:
-  http://roadrunner.swansea.linux.org.uk/v4l.shtml
+  http://linuxtv.org
 
-The video4linux2 page:
-  http://millennium.diads.com/bdirks/v4l2.htm
+The V4L2 API spec:
+  http://v4l2spec.bytesex.org/
 
 Some web pages about the quickcams:
http://www.dkfz-heidelberg.de/Macromol/wedemann/mini-HOWTO-cqcam.html
diff --git a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran
index deb218f..85c575a 100644
--- a/Documentation/video4linux/Zoran
+++ b/Documentation/video4linux/Zoran
@@ -339,9 +339,9 @@ Information - video4linux/mjpeg extensions:
 (also see below)
 
 Information - video4linux2:
-http://www.thedirks.org/v4l2/
+http://linuxtv.org
+http://v4l2spec.bytesex.org/
 /usr/include/linux/videodev2.h
-http://www.bytesex.org/v4l/
 
 More information on the video4linux/mjpeg extensions, by Serguei
 Miridonovi and Rainer Johanni:
diff --git a/drivers/media/video/v4l1-compat.c 
b/drivers/media/video/v4l1-compat.c
index 8a13e59..d2c1ae0 100644
--- a/drivers/media/video/v4l1-compat.c
+++ b/drivers/media/video/v4l1-compat.c
@@ -11,7 +11,7 @@
  * as published by the Free Software Foundation; either version
  * 2 of the License, or (at your option) any later version.
  *
- * Author: Bill Dirks [EMAIL PROTECTED]
+ * Author: Bill Dirks [EMAIL PROTECTED]
  * et al.
  *
  */
diff --git a/drivers/media/video/v4l2-common.c 
b/drivers/media/video/v4l2-common.c
index b8ee37d..dab8751 100644
--- a/drivers/media/video/v4l2-common.c
+++ b/drivers/media/video/v4l2-common.c
@@ -12,7 +12,7 @@
  * as published by the Free Software Foundation; either version
  * 2 of the License, or (at your option) any later version.
  *
- * Author: Bill Dirks [EMAIL PROTECTED]
+ * Author: Bill Dirks [EMAIL PROTECTED]
  * based on code by Alan Cox, [EMAIL PROTECTED]
  *
  */
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index d94e268..112b28c 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -8,7 +8,7 @@
  *
  * See http://linuxtv.org for more info
  *
- * Author: Bill Dirks [EMAIL PROTECTED]
+ * Author: Bill Dirks [EMAIL PROTECTED]
  * Justin Schoeman
  * et al.
  */
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5070): Budget-ci: add support for the Technotrend 1500 bundled remote

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ae1942c5712f700c9ccc8cc287c51db4daaa50d7
Commit: ae1942c5712f700c9ccc8cc287c51db4daaa50d7
Parent: 43db48d3d2f6326c571984b7b30ab355596bb3cc
Author: Ville-Pekka Vainio [EMAIL PROTECTED]
AuthorDate: Fri Jan 12 14:06:21 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:20 2007 -0200

V4L/DVB (5070): Budget-ci: add support for the Technotrend 1500 bundled 
remote

The keymap is based on a previous patch by Jussi Kukkonen.
This remote is identified by subsystem_device id 0x1010.

Signed-off-by: Ville-Pekka Vainio [EMAIL PROTECTED]
Signed-off-by: Michael Krufky [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/common/ir-keymaps.c   |   39 +++
 drivers/media/dvb/ttpci/budget-ci.c |   11 +-
 include/media/ir-common.h   |1 +
 3 files changed, 50 insertions(+), 1 deletions(-)

diff --git a/drivers/media/common/ir-keymaps.c 
b/drivers/media/common/ir-keymaps.c
index 8b29020..03b47a2 100644
--- a/drivers/media/common/ir-keymaps.c
+++ b/drivers/media/common/ir-keymaps.c
@@ -1738,3 +1738,42 @@ IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE] = {
 };
 
 EXPORT_SYMBOL_GPL(ir_codes_encore_enltv);
+
+/* for the Technotrend 1500 bundled remote: */
+IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE] = {
+   [ 0x01 ] = KEY_POWER,
+   [ 0x02 ] = KEY_SHUFFLE, /* ? double-arrow key */
+   [ 0x03 ] = KEY_1,
+   [ 0x04 ] = KEY_2,
+   [ 0x05 ] = KEY_3,
+   [ 0x06 ] = KEY_4,
+   [ 0x07 ] = KEY_5,
+   [ 0x08 ] = KEY_6,
+   [ 0x09 ] = KEY_7,
+   [ 0x0a ] = KEY_8,
+   [ 0x0b ] = KEY_9,
+   [ 0x0c ] = KEY_0,
+   [ 0x0d ] = KEY_UP,
+   [ 0x0e ] = KEY_LEFT,
+   [ 0x0f ] = KEY_OK,
+   [ 0x10 ] = KEY_RIGHT,
+   [ 0x11 ] = KEY_DOWN,
+   [ 0x12 ] = KEY_INFO,
+   [ 0x13 ] = KEY_EXIT,
+   [ 0x14 ] = KEY_RED,
+   [ 0x15 ] = KEY_GREEN,
+   [ 0x16 ] = KEY_YELLOW,
+   [ 0x17 ] = KEY_BLUE,
+   [ 0x18 ] = KEY_MUTE,
+   [ 0x19 ] = KEY_TEXT,
+   [ 0x1a ] = KEY_MODE,/* ? TV/Radio */
+   [ 0x21 ] = KEY_OPTION,
+   [ 0x22 ] = KEY_EPG,
+   [ 0x23 ] = KEY_CHANNELUP,
+   [ 0x24 ] = KEY_CHANNELDOWN,
+   [ 0x25 ] = KEY_VOLUMEUP,
+   [ 0x26 ] = KEY_VOLUMEDOWN,
+   [ 0x27 ] = KEY_SETUP,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_tt_1500);
diff --git a/drivers/media/dvb/ttpci/budget-ci.c 
b/drivers/media/dvb/ttpci/budget-ci.c
index f2066b4..ea42576 100644
--- a/drivers/media/dvb/ttpci/budget-ci.c
+++ b/drivers/media/dvb/ttpci/budget-ci.c
@@ -223,7 +223,6 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
switch (budget_ci-budget.dev-pci-subsystem_device) {
case 0x100c:
case 0x100f:
-   case 0x1010:
case 0x1011:
case 0x1012:
case 0x1017:
@@ -236,6 +235,16 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
else
budget_ci-ir.rc5_device = rc5_device;
break;
+   case 0x1010:
+   /* for the Technotrend 1500 bundled remote */
+   ir_input_init(input_dev, budget_ci-ir.state,
+ IR_TYPE_RC5, ir_codes_tt_1500);
+
+   if (rc5_device  0)
+   budget_ci-ir.rc5_device = IR_DEVICE_ANY;
+   else
+   budget_ci-ir.rc5_device = rc5_device;
+   break;
default:
/* unknown remote */
ir_input_init(input_dev, budget_ci-ir.state,
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 0a75c0f..9807a7c 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -139,6 +139,7 @@ extern IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE];
 extern IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE];
 extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE];
 extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE];
+extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE];
 
 #endif
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5073): Fix OOPS on some waitqueue conditions

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=df3a710458462aa9427cdeec947bf71af257e8dd
Commit: df3a710458462aa9427cdeec947bf71af257e8dd
Parent: ae1942c5712f700c9ccc8cc287c51db4daaa50d7
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 13 09:25:16 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:21 2007 -0200

V4L/DVB (5073): Fix OOPS on some waitqueue conditions

If for some reason vivi_thread() fails, vivi will suffer an OOPS at
thread stop code, since waitqueue wouldn't be properly initializated.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/vivi.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index cfb6b1f..119cfd5 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -538,7 +538,6 @@ static int vivi_start_thread(struct vivi_dmaqueue  *dma_q)
dma_q-ini_jiffies=jiffies;
 
dprintk(1,%s\n,__FUNCTION__);
-   init_waitqueue_head(dma_q-wq);
 
dma_q-kthread = kthread_run(vivi_thread, dma_q, vivi);
 
@@ -1352,6 +1351,7 @@ static int __init vivi_init(void)
/* init video dma queues */
INIT_LIST_HEAD(dev-vidq.active);
INIT_LIST_HEAD(dev-vidq.queued);
+   init_waitqueue_head(dev-vidq.wq);
 
/* initialize locks */
init_MUTEX(dev-lock);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5074): Some fixes at stream waitqueue on vivi

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0b600512860cab5a0bb4647f5f726a91bce2633c
Commit: 0b600512860cab5a0bb4647f5f726a91bce2633c
Parent: df3a710458462aa9427cdeec947bf71af257e8dd
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sun Jan 14 08:33:24 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:21 2007 -0200

V4L/DVB (5074): Some fixes at stream waitqueue on vivi

There are several potential troubles on vivi waitqueue code:
- Watchdog timer should be reset at every received frame;
- Watchdog timer should be reset at the beginning of vivi_thread();
- Checks for errors when creating a newer thread with kernel_thread();
- Wake up vivi_thread() after creating it.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/vivi.c |   16 +++-
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index 119cfd5..1784419 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -471,11 +471,12 @@ static void vivi_thread_tick(struct vivi_dmaqueue  *dma_q)
 
/* Fill buffer */
vivi_fillbuff(dev,buf);
-   }
-   if (list_empty(dma_q-active)) {
-   del_timer(dma_q-timeout);
-   } else {
-   mod_timer(dma_q-timeout, jiffies+BUFFER_TIMEOUT);
+
+   if (list_empty(dma_q-active)) {
+   del_timer(dma_q-timeout);
+   } else {
+   mod_timer(dma_q-timeout, jiffies+BUFFER_TIMEOUT);
+   }
}
if (bc != 1)
dprintk(1,%s: %d buffers handled (should be 
1)\n,__FUNCTION__,bc);
@@ -522,6 +523,8 @@ static int vivi_thread(void *data)
 
dprintk(1,thread started\n);
 
+   mod_timer(dma_q-timeout, jiffies+BUFFER_TIMEOUT);
+
for (;;) {
vivi_sleep(dma_q);
 
@@ -545,6 +548,9 @@ static int vivi_start_thread(struct vivi_dmaqueue  *dma_q)
printk(KERN_ERR vivi: kernel_thread() failed\n);
return PTR_ERR(dma_q-kthread);
}
+   /* Wakes thread */
+   wake_up_interruptible(dma_q-wq);
+
dprintk(1,returning from %s\n,__FUNCTION__);
return 0;
 }
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5034): Pvrusb2: Enable radio mode round #1

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=275b2e283b139bee19e7de5929d01484b8e3ee51
Commit: 275b2e283b139bee19e7de5929d01484b8e3ee51
Parent: 0b600512860cab5a0bb4647f5f726a91bce2633c
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:05:19 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:21 2007 -0200

V4L/DVB (5034): Pvrusb2: Enable radio mode round #1

This is the logic that supports switching modes via e.g.,
  echo radio  /sys/class/pvrusb2/sn-*/ctl_input/cur_val.

To do the mode switching we need to:
a) broadcast AUDC_SET_RADIO and
b) issue the CX2341X_ENC_MUTE_VIDEO command to the encoder.

The first is done by adding a new pvr2_i2c_op and having it trigger on
input change, the second by adding this command in pvr2_encoder_start()
and requesting an encoder restart on input change by setting
stale_subsys_mask appropriately.

The clues about AUDC_SET_RADIO and CX2341X_ENC_MUTE_VIDEO were kindly
provided by Hans Verkuil on the pvrusb2 mailing list. The idea to
implement mode switching this way (on input change) is due to Mike Isely.

Why AUDC_SET_RADIO/VIDIOC_S_STD are used for switching? I can 't be sure,
but I think this can be traced to a cornell student being the first to
implement radio support in ivtv as a different standard. I think the
rest just evolved from there (it 's in the ivtv ML archives).

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-encoder.c  |3 ++
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |7 
 .../media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c   |5 ++-
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c |   31 ++-
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h |1 +
 5 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-encoder.c 
b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
index c94f97b..d094cac 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-encoder.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
@@ -360,6 +360,9 @@ int pvr2_encoder_start(struct pvr2_hdw *hdw)
pvr2_hdw_gpio_chg_dir(hdw,0x,0x0481);
pvr2_hdw_gpio_chg_out(hdw,0x,0x);
 
+   pvr2_encoder_vcmd(hdw,CX2341X_ENC_MUTE_VIDEO,1,
+ hdw-input_val == PVR2_CVAL_INPUT_RADIO ? 1 : 0);
+
if (hdw-config == pvr2_config_vbi) {
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
   0x01,0x14);
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 503255c..5f6ab99 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2260,6 +2260,13 @@ static int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw 
*hdw)
stale_subsys_mask |= (1PVR2_SUBSYS_B_ENC_CFG);
}
 
+   if (hdw-input_dirty) {
+   /* pk: If input changes to or from radio, then the encoder
+  needs to be restarted (for ENC_MUTE_VIDEO to work) */
+   stale_subsys_mask |= (1PVR2_SUBSYS_B_ENC_RUN);
+   }
+
+
if (hdw-srate_dirty) {
/* Write new sample rate into control structure since
 * the master copy is stale.  We must track srate
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c
index 0512166..93b8d07 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c
@@ -39,6 +39,7 @@
 #define OP_AUDIORATE 4
 #define OP_SIZE 5
 #define OP_LOG 6
+#define OP_RADIO 7
 
 static const struct pvr2_i2c_op * const ops[] = {
[OP_STANDARD] = pvr2_i2c_op_v4l2_standard,
@@ -47,6 +48,7 @@ static const struct pvr2_i2c_op * const ops[] = {
[OP_FREQ] = pvr2_i2c_op_v4l2_frequency,
[OP_SIZE] = pvr2_i2c_op_v4l2_size,
[OP_LOG] = pvr2_i2c_op_v4l2_log,
+   [OP_RADIO] = pvr2_i2c_op_v4l2_radio,
 };
 
 void pvr2_i2c_probe(struct pvr2_hdw *hdw,struct pvr2_i2c_client *cp)
@@ -58,7 +60,8 @@ void pvr2_i2c_probe(struct pvr2_hdw *hdw,struct 
pvr2_i2c_client *cp)
(1  OP_VOLUME) |
(1  OP_FREQ) |
(1  OP_SIZE) |
-   (1  OP_LOG));
+   (1  OP_LOG) |
+   (1  OP_RADIO));
 
if (id == I2C_DRIVERID_MSP3400) {
if (pvr2_i2c_msp3400_setup(hdw,cp)) {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
index 05ea17a..50fcceb 

V4L/DVB (5035): Pvrusb2: Enable radio mode round #2

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=25d8527a441760c333c41ec7197ba0750780b371
Commit: 25d8527a441760c333c41ec7197ba0750780b371
Parent: 275b2e283b139bee19e7de5929d01484b8e3ee51
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:06:04 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:22 2007 -0200

V4L/DVB (5035): Pvrusb2: Enable radio mode round #2

This is the logic that:
  a) Ensures /sys/class/pvrusb2/sn-*/ctl_frequency/{max,min}_val are
 automagically reset to sane values on each mode change.

  b) Allows tuning to a radio frequency by something like:
 echo `perl -e print int(94.9*16000 + 0.5)` \
/sys/class/pvrusb2/sn-*/ctl_input/cur_val


The trick was to take advantage of the already existing .get_{min,max}_value
function pointers in pvr2_ctrl, to dynamically override the hardcoded 
values
for min/max frequency at runtime.

For a moment I thought to dispose of the hardcoded MIN/MAX_FREQ and use the
hirange/lowrange fields of the v4l2_tuner struct instead, but then I see 
that
tuner-core.c kinda hardcodes these as well, so I decided to not bother.

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |   39 +---
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c |4 ++-
 2 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 5f6ab99..ca4ef95 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -37,6 +37,12 @@
 #include pvrusb2-encoder.h
 #include pvrusb2-debug.h
 
+#define TV_MIN_FREQ 5525L
+#define TV_MAX_FREQ 85000L
+
+#define RADIO_MIN_FREQ 1392000L //87MHz
+#define RADIO_MAX_FREQ 1728000L //108MHz
+
 struct usb_device_id pvr2_device_table[] = {
[PVR2_HDW_TYPE_29XXX] = { USB_DEVICE(0x2040, 0x2900) },
[PVR2_HDW_TYPE_24XXX] = { USB_DEVICE(0x2040, 0x2400) },
@@ -375,6 +381,28 @@ static int ctrl_vres_min_get(struct pvr2_ctrl *cptr,int 
*vp)
return 0;
 }
 
+static int ctrl_freq_max_get(struct pvr2_ctrl *cptr, int *vp)
+{
+   /* Actual maximum depends on radio/tv mode */
+   if (cptr-hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
+   *vp = RADIO_MAX_FREQ;
+   } else {
+   *vp = TV_MAX_FREQ;
+   }
+   return 0;
+}
+
+static int ctrl_freq_min_get(struct pvr2_ctrl *cptr, int *vp)
+{
+   /* Actual minimum depends on radio/tv mode */
+   if (cptr-hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
+   *vp = RADIO_MIN_FREQ;
+   } else {
+   *vp = TV_MIN_FREQ;
+   }
+   return 0;
+}
+
 static int ctrl_cx2341x_is_dirty(struct pvr2_ctrl *cptr)
 {
return cptr-hdw-enc_stale != 0;
@@ -644,9 +672,6 @@ VCREATE_FUNCS(res_hor)
 VCREATE_FUNCS(res_ver)
 VCREATE_FUNCS(srate)
 
-#define MIN_FREQ 5525L
-#define MAX_FREQ 85000L
-
 /* Table definition of all controls which can be manipulated */
 static const struct pvr2_ctl_info control_defs[] = {
{
@@ -760,7 +785,11 @@ static const struct pvr2_ctl_info control_defs[] = {
.get_value = ctrl_freq_get,
.is_dirty = ctrl_freq_is_dirty,
.clear_dirty = ctrl_freq_clear_dirty,
-   DEFINT(MIN_FREQ,MAX_FREQ),
+   DEFINT(TV_MIN_FREQ,TV_MAX_FREQ),
+   /* Hook in check for input value (tv/radio) and adjust
+  max/min values accordingly */
+   .get_max_value = ctrl_freq_max_get,
+   .get_min_value = ctrl_freq_min_get,
},{
.desc = Channel,
.name = channel,
@@ -772,7 +801,7 @@ static const struct pvr2_ctl_info control_defs[] = {
.name = freq_table_value,
.set_value = ctrl_channelfreq_set,
.get_value = ctrl_channelfreq_get,
-   DEFINT(MIN_FREQ,MAX_FREQ),
+   DEFINT(TV_MIN_FREQ,TV_MAX_FREQ),
},{
.desc = Channel Program ID,
.name = freq_table_channel,
diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
index 50fcceb..ed4eed4 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
@@ -169,7 +169,9 @@ static void set_frequency(struct pvr2_hdw *hdw)
fv = hdw-freqVal;
pvr2_trace(PVR2_TRACE_CHIPS,i2c v4l2 set_freq(%lu),fv);
memset(freq,0,sizeof(freq));
-   freq.frequency = fv / 62500;
+   if (hdw-input_val == PVR2_CVAL_INPUT_TV)
+   fv /= 62500;
+   freq.frequency = fv;
 

V4L/DVB (5036): Pvrusb2: Fix for min/max control value checking

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6fcb5b3ef758ca78461d390dc07bed5a4667c521
Commit: 6fcb5b3ef758ca78461d390dc07bed5a4667c521
Parent: 25d8527a441760c333c41ec7197ba0750780b371
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:06:54 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:22 2007 -0200

V4L/DVB (5036): Pvrusb2: Fix for min/max control value checking

In the previous patch we exploited the get_{min,max}_value facility to 
adjust
min/max allowable frequencies on the fly, depending on tuner mode.

Unfortunately, this facility was not used inside the *sym_to_val() function
that translates what we echo to sysfs, which means we got an -ERANGE despite
asking for a frequency between what we read to be min/max.
This patch corrects this small omission.

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-ctrl.c |   17 +
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c 
b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
index c77de85..5c9cf15 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
@@ -498,10 +498,19 @@ int pvr2_ctrl_sym_to_value(struct pvr2_ctrl *cptr,
LOCK_TAKE(cptr-hdw-big_lock); do {
if (cptr-info-type == pvr2_ctl_int) {
ret = parse_token(ptr,len,valptr,NULL,0);
-   if ((ret = 0) 
-   ((*valptr  cptr-info-def.type_int.min_value) ||
-(*valptr  cptr-info-def.type_int.max_value))) {
-   ret = -ERANGE;
+   if (ret = 0) {
+   int min, max;
+   min = cptr-info-def.type_int.min_value;
+   if (cptr-info-get_min_value) {
+   cptr-info-get_min_value(cptr,min);
+   }
+   max = cptr-info-def.type_int.max_value;
+   if (cptr-info-get_max_value) {
+   cptr-info-get_max_value(cptr,max);
+   }
+   if ((*valptr  min) || (*valptr  max)) {
+   ret = -ERANGE;
+   }
}
if (maskptr) *maskptr = ~0;
} else if (cptr-info-type == pvr2_ctl_bool) {
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5037): Pvrusb2: Implement multiple minor device number handling

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2fdf3d9c94f7f752dacbebb75bbecda3c1b082a0
Commit: 2fdf3d9c94f7f752dacbebb75bbecda3c1b082a0
Parent: 6fcb5b3ef758ca78461d390dc07bed5a4667c521
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:07:58 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:22 2007 -0200

V4L/DVB (5037): Pvrusb2: Implement multiple minor device number handling

This is the first patch in preparation of the V4L2/IVTV radio interface.
It does away with the assumption of only one minor per device. It also
adds a file to show the radio minor as well. This can be useful for a
program like pvr-radio.c (when it grows up), since this way it can search
for the minor of the /dev/radioX device it opened and use the video minor
of the same driver instance to get to the actual stream.

The implementation looks kinda ugly. Feel free to improve (that is the
reason behind separate patches anyway).

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h |6 ++--
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |   14 +---
 drivers/media/video/pvrusb2/pvrusb2-hdw.h  |8 ++--
 drivers/media/video/pvrusb2/pvrusb2-sysfs.c|   33 +++-
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |9 -
 5 files changed, 54 insertions(+), 16 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
index 34b08fb..4f69431 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -281,9 +281,9 @@ struct pvr2_hdw {
int unit_number; /* ID for driver instance */
unsigned long serial_number; /* ID for hardware itself */
 
-   /* Minor number used by v4l logic (yes, this is a hack, as there should
-  be no v4l junk here).  Probably a better way to do this. */
-   int v4l_minor_number;
+   /* Minor numbers used by v4l logic (yes, this is a hack, as there
+  should be no v4l junk here).  Probably a better way to do this. */
+   int v4l_minor_number[3];
 
/* Location of eeprom or a negative number if none */
int eeprom_addr;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index ca4ef95..4b45299 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1898,7 +1898,9 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface 
*intf,
 
hdw-eeprom_addr = -1;
hdw-unit_number = -1;
-   hdw-v4l_minor_number = -1;
+   hdw-v4l_minor_number[0] = -1;
+   hdw-v4l_minor_number[1] = -1;
+   hdw-v4l_minor_number[2] = -1;
hdw-ctl_write_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL);
if (!hdw-ctl_write_buffer) goto fail;
hdw-ctl_read_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL);
@@ -2546,16 +2548,16 @@ int pvr2_hdw_cpufw_get(struct pvr2_hdw *hdw,unsigned 
int offs,
 }
 
 
-int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *hdw)
+int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *hdw,int index)
 {
-   return hdw-v4l_minor_number;
+   return hdw-v4l_minor_number[index];
 }
 
 
-/* Store the v4l minor device number */
-void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,int v)
+/* Store a v4l minor device number */
+void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,int index,int v)
 {
-   hdw-v4l_minor_number = v;
+   hdw-v4l_minor_number[index] = v;
 }
 
 
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
index 29979bb..b1d80bd 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
@@ -205,11 +205,11 @@ int pvr2_hdw_cpufw_get_enabled(struct pvr2_hdw *);
 int pvr2_hdw_cpufw_get(struct pvr2_hdw *,unsigned int offs,
   char *buf,unsigned int cnt);
 
-/* Retrieve previously stored v4l minor device number */
-int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *);
+/* Retrieve a previously stored v4l minor device number */
+int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *,int);
 
-/* Store the v4l minor device number */
-void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *,int);
+/* Store a v4l minor device number */
+void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *,int,int);
 
 /* Direct read/write access to chip's registers:
chip_id - unique id of chip (e.g. I2C_DRIVERD_)
diff --git a/drivers/media/video/pvrusb2/pvrusb2-sysfs.c 
b/drivers/media/video/pvrusb2/pvrusb2-sysfs.c
index c294f46..d583c97 100644
--- 

V4L/DVB (5038): Pvrusb2: Implement stream claim checking function

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=99cfdf5cc6dbe0bd748d810953874d4e08051a9f
Commit: 99cfdf5cc6dbe0bd748d810953874d4e08051a9f
Parent: 2fdf3d9c94f7f752dacbebb75bbecda3c1b082a0
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:08:55 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:23 2007 -0200

V4L/DVB (5038): Pvrusb2: Implement stream claim checking function

Add (and expose) a new function, pvr2_channel_check_stream_no_lock(), in
pvrusb2-context.c. This is hopefully the last V4L2 interface related patch
to change anything outside pvrusb2-v4l2.c.

We need this to implement the open() for the radio device. The reason is
that within the *enter_context() section of open() we need to ensure nobody
is streaming and if we cannot, we should cleanup after ourselves and return
 -EBUSY. We cannot just use claim_stream() because:

   1) That would cause a deadlock trying to re-acquire the context lock
   2) We only need to ensure that nobody is streaming. We don't need to
  actually acquire the stream.

Again, this is a kinda ugly patch. Feel free to improve.

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-context.c |   11 +++
 drivers/media/video/pvrusb2/pvrusb2-context.h |2 ++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.c 
b/drivers/media/video/pvrusb2/pvrusb2-context.c
index cf12974..69786cd 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.c
@@ -188,6 +188,17 @@ void pvr2_channel_done(struct pvr2_channel *cp)
 }
 
 
+int pvr2_channel_check_stream_no_lock(struct pvr2_channel *cp,
+ struct pvr2_context_stream *sp)
+{
+   if (sp == cp-stream) return 0;
+   if (sp-user) {
+   return -EBUSY;
+   }
+   return 0;
+}
+
+
 int pvr2_channel_claim_stream(struct pvr2_channel *cp,
  struct pvr2_context_stream *sp)
 {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.h 
b/drivers/media/video/pvrusb2/pvrusb2-context.h
index 6327fa1..4d0f4ad 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.h
@@ -76,6 +76,8 @@ void pvr2_channel_init(struct pvr2_channel *,struct 
pvr2_context *);
 void pvr2_channel_done(struct pvr2_channel *);
 int pvr2_channel_claim_stream(struct pvr2_channel *,
  struct pvr2_context_stream *);
+int pvr2_channel_check_stream_no_lock(struct pvr2_channel *,
+ struct pvr2_context_stream *);
 struct pvr2_ioread *pvr2_channel_create_mpeg_stream(
struct pvr2_context_stream *);
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5039): Pvrusb2: Implement /dev/radioX

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ae2b9e25fdfb63efed3659b19c5cc8778fd981ba
Commit: ae2b9e25fdfb63efed3659b19c5cc8778fd981ba
Parent: 99cfdf5cc6dbe0bd748d810953874d4e08051a9f
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:09:55 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:23 2007 -0200

V4L/DVB (5039): Pvrusb2: Implement /dev/radioX

The main V4L2 interface patch. This is yet very incomplete, incorrect and
probably inappropriate for inclusion as-is, but at least with this I 'm able
to tune and play radio through a V4L2 program (pvr-radio.c, a thumb 
version
of ivtv-radio.c with just the essentials).

Therefore, it kinda gives an idea of what is needed to support this, hm,
interface (partly used also by e.g., kradio). Please point out any mistakes
on this code. I 'm sure I 'm messing up some struct initialization somewhere
but currently I 'm too lazy to actually think this through until I complete
the functionality (e.g., handle the VIDIOC_S_STD, ENUMINPUT, etc ioctls
appropriately).

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   83 +--
 1 files changed, 76 insertions(+), 7 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 02a541f..3cea610 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -32,6 +32,8 @@
 #include media/v4l2-dev.h
 #include media/v4l2-common.h
 
+#define PVR2_NR_STREAMS 3
+
 struct pvr2_v4l2_dev;
 struct pvr2_v4l2_fh;
 struct pvr2_v4l2;
@@ -77,7 +79,7 @@ static struct v4l2_capability pvr_capability ={
.bus_info   = usb,
.version= KERNEL_VERSION(0,8,0),
.capabilities   = (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VBI_CAPTURE |
-  V4L2_CAP_TUNER | V4L2_CAP_AUDIO |
+  V4L2_CAP_TUNER | V4L2_CAP_AUDIO | V4L2_CAP_RADIO |
   V4L2_CAP_READWRITE),
.reserved   = {0,0,0,0}
 };
@@ -784,6 +786,18 @@ static int pvr2_v4l2_release(struct inode *inode, struct 
file *file)
pvr2_ioread_destroy(fhp-rhp);
fhp-rhp = NULL;
}
+
+   if (fhp-dev_info-config == pvr2_config_radio) {
+   int ret;
+   struct pvr2_hdw *hdw;
+   hdw = fhp-channel.mc_head-hdw;
+   if ((ret = pvr2_ctrl_set_value(
+   pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
+   PVR2_CVAL_INPUT_TV))) {
+   return ret;
+   }
+   }
+
v4l2_prio_close(vp-prio, fhp-prio);
file-private_data = NULL;
 
@@ -845,6 +859,32 @@ static int pvr2_v4l2_open(struct inode *inode, struct file 
*file)
pvr2_context_enter(vp-channel.mc_head); do {
pvr2_trace(PVR2_TRACE_STRUCT,Creating pvr_v4l2_fh id=%p,fhp);
pvr2_channel_init(fhp-channel,vp-channel.mc_head);
+
+   /* pk: warning, severe ugliness follows. 18+ only.
+  please blaim V4L(ivtv) for braindamaged interfaces,
+  not the implementor. This is probably flawed, but
+  suggestions on how to do this right are welcome! */
+   if (dip-config == pvr2_config_radio) {
+   int ret;
+   if ((pvr2_channel_check_stream_no_lock(fhp-channel,
+ fhp-dev_info-stream)) != 0) {
+   /* We can 't switch modes while streaming */
+   pvr2_channel_done(fhp-channel);
+   kfree(fhp);
+   pvr2_context_exit(vp-channel.mc_head);
+   return -EBUSY;
+   }
+
+   if ((ret = pvr2_ctrl_set_value(
+   pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
+ PVR2_CVAL_INPUT_RADIO))) {
+   pvr2_channel_done(fhp-channel);
+   kfree(fhp);
+   pvr2_context_exit(vp-channel.mc_head);
+   return ret;
+   }
+   }
+
fhp-vnext = NULL;
fhp-vprev = vp-vlast;
if (vp-vlast) {
@@ -942,6 +982,12 @@ static ssize_t pvr2_v4l2_read(struct file *file,
return tcnt;
}
 
+   if (fh-dev_info-config == pvr2_config_radio) {
+   /* Radio device nodes on this device
+  cannot be read or written. */
+ 

V4L/DVB (5041): Pvrusb2: Use separate enumeration for get/store of minor number

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8079384eeb1c490d0ad679cef061205e1b5a1c8a
Commit: 8079384eeb1c490d0ad679cef061205e1b5a1c8a
Parent: fd5a75fe00ec13311289928c2cb17d8676f8db45
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:12:28 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:24 2007 -0200

V4L/DVB (5041): Pvrusb2: Use separate enumeration for get/store of minor 
number

Use separate enum for get/store of minor number; we want pvr2_config
to go away eventually and since it really means something different,
don't use it here

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h |3 ++-
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |   17 ++---
 drivers/media/video/pvrusb2/pvrusb2-hdw.h  |   10 --
 drivers/media/video/pvrusb2/pvrusb2-sysfs.c|4 ++--
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   12 +---
 5 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
index e6d546f..746d174 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -283,7 +283,8 @@ struct pvr2_hdw {
 
/* Minor numbers used by v4l logic (yes, this is a hack, as there
   should be no v4l junk here).  Probably a better way to do this. */
-   int v4l_minor_number_mpeg;
+   int v4l_minor_number_video;
+   int v4l_minor_number_vbi;
int v4l_minor_number_radio;
 
/* Location of eeprom or a negative number if none */
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 6acd73c..39d04d8 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1898,7 +1898,8 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface 
*intf,
 
hdw-eeprom_addr = -1;
hdw-unit_number = -1;
-   hdw-v4l_minor_number_mpeg = -1;
+   hdw-v4l_minor_number_video = -1;
+   hdw-v4l_minor_number_vbi = -1;
hdw-v4l_minor_number_radio = -1;
hdw-ctl_write_buffer = kmalloc(PVR2_CTL_BUFFSIZE,GFP_KERNEL);
if (!hdw-ctl_write_buffer) goto fail;
@@ -2548,11 +2549,12 @@ int pvr2_hdw_cpufw_get(struct pvr2_hdw *hdw,unsigned 
int offs,
 
 
 int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *hdw,
- enum pvr2_config index)
+ enum pvr2_v4l_type index)
 {
switch (index) {
-   case pvr2_config_mpeg: return hdw-v4l_minor_number_mpeg;
-   case pvr2_config_radio: return hdw-v4l_minor_number_radio;
+   case pvr2_v4l_type_video: return hdw-v4l_minor_number_video;
+   case pvr2_v4l_type_vbi: return hdw-v4l_minor_number_vbi;
+   case pvr2_v4l_type_radio: return hdw-v4l_minor_number_radio;
default: return -1;
}
 }
@@ -2560,11 +2562,12 @@ int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *hdw,
 
 /* Store a v4l minor device number */
 void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *hdw,
-enum pvr2_config index,int v)
+enum pvr2_v4l_type index,int v)
 {
switch (index) {
-   case pvr2_config_mpeg: hdw-v4l_minor_number_mpeg = v;
-   case pvr2_config_radio: hdw-v4l_minor_number_radio = v;
+   case pvr2_v4l_type_video: hdw-v4l_minor_number_video = v;
+   case pvr2_v4l_type_vbi: hdw-v4l_minor_number_vbi = v;
+   case pvr2_v4l_type_radio: hdw-v4l_minor_number_radio = v;
default: break;
}
 }
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
index fa3769a..19af4d6 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
@@ -78,6 +78,12 @@ enum pvr2_config {
pvr2_config_radio,
 };
 
+enum pvr2_v4l_type {
+   pvr2_v4l_type_video,
+   pvr2_v4l_type_vbi,
+   pvr2_v4l_type_radio,
+};
+
 const char *pvr2_config_get_name(enum pvr2_config);
 
 struct pvr2_hdw;
@@ -206,11 +212,11 @@ int pvr2_hdw_cpufw_get(struct pvr2_hdw *,unsigned int 
offs,
   char *buf,unsigned int cnt);
 
 /* Retrieve a previously stored v4l minor device number */
-int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *,enum pvr2_config index);
+int pvr2_hdw_v4l_get_minor_number(struct pvr2_hdw *,enum pvr2_v4l_type index);
 
 /* Store a v4l minor device number */
 void pvr2_hdw_v4l_store_minor_number(struct pvr2_hdw *,
-enum pvr2_config index,int);
+enum pvr2_v4l_type index,int);
 
 /* Direct read/write access to chip's registers:
   

V4L/DVB (5044): Pvrusb2: Allow overriding vbi and radio device minor numbers

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5e6862cefe004f0f7ad86e0a80df4d9465576903
Commit: 5e6862cefe004f0f7ad86e0a80df4d9465576903
Parent: f5156b06acaad13b74f72bf62025de7b76b1b8a4
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:17:26 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:29 2007 -0200

V4L/DVB (5044): Pvrusb2: Allow overriding vbi and radio device minor numbers

Support specification of vbi and radio device minor numbers in a
manner similar to the video device minor number.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   32 +--
 1 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 3a2a0ca..28187fb 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -71,7 +71,13 @@ struct pvr2_v4l2 {
 
 static int video_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
 module_param_array(video_nr, int, NULL, 0444);
-MODULE_PARM_DESC(video_nr, Offset for device's minor);
+MODULE_PARM_DESC(video_nr, Offset for device's video dev minor);
+static int radio_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
+module_param_array(radio_nr, int, NULL, 0444);
+MODULE_PARM_DESC(radio_nr, Offset for device's radio dev minor);
+static int vbi_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
+module_param_array(vbi_nr, int, NULL, 0444);
+MODULE_PARM_DESC(vbi_nr, Offset for device's vbi dev minor);
 
 static struct v4l2_capability pvr_capability ={
.driver = pvrusb2,
@@ -1113,7 +1119,18 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
mindevnum = -1;
unit_number = pvr2_hdw_get_unit_number(vp-channel.mc_head-hdw);
if ((unit_number = 0)  (unit_number  PVR_NUM)) {
-   mindevnum = video_nr[unit_number];
+   switch (v4l_type) {
+   case VFL_TYPE_VBI:
+   mindevnum = vbi_nr[unit_number];
+   break;
+   case VFL_TYPE_RADIO:
+   mindevnum = radio_nr[unit_number];
+   break;
+   case VFL_TYPE_GRABBER:
+   default:
+   mindevnum = video_nr[unit_number];
+   break;
+   }
}
if ((video_register_device(dip-devbase, v4l_type, mindevnum)  0) 
(video_register_device(dip-devbase, v4l_type, -1)  0)) {
@@ -1122,17 +1139,18 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev 
*dip,
switch (cfg) {
case pvr2_config_mpeg:
printk(KERN_INFO pvrusb2: registered device video%d [%s]\n,
-  dip-devbase.minor,pvr2_config_get_name(dip-config));
+  dip-devbase.minor  0x1f,
+  pvr2_config_get_name(dip-config));
break;
case pvr2_config_vbi:
printk(KERN_INFO pvrusb2: registered device vbi%d [%s]\n,
-   dip-devbase.minor - MINOR_VFL_TYPE_VBI_MIN,
-   pvr2_config_get_name(dip-config));
+  dip-devbase.minor  0x1f,
+  pvr2_config_get_name(dip-config));
break;
case pvr2_config_radio:
printk(KERN_INFO pvrusb2: registered device radio%d [%s]\n,
-   dip-devbase.minor - MINOR_VFL_TYPE_RADIO_MIN,
-   pvr2_config_get_name(dip-config));
+  dip-devbase.minor  0x1f,
+  pvr2_config_get_name(dip-config));
break;
default:
break;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5045): Pvrusb2: Fix heap corruption introduced by radio mods

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0f0f257b7b46cc65c0f8f6f30444005b9c255e79
Commit: 0f0f257b7b46cc65c0f8f6f30444005b9c255e79
Parent: 5e6862cefe004f0f7ad86e0a80df4d9465576903
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:19:42 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:31 2007 -0200

V4L/DVB (5045): Pvrusb2: Fix heap corruption introduced by radio mods

We can't allocate v4l device structures in a block, since the v4l core
governs when each device actually gets freed.  This bug was introduced
as part of the core radio implementation.  Fix it.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |  103 
 1 files changed, 74 insertions(+), 29 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 28187fb..d5a54e8 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -32,8 +32,6 @@
 #include media/v4l2-dev.h
 #include media/v4l2-common.h
 
-#define PVR2_NR_STREAMS 3
-
 struct pvr2_v4l2_dev;
 struct pvr2_v4l2_fh;
 struct pvr2_v4l2;
@@ -65,8 +63,11 @@ struct pvr2_v4l2 {
 
struct v4l2_prio_state prio;
 
-   /* streams */
-   struct pvr2_v4l2_dev *vdev;
+   /* streams - Note that these must be separately, individually,
+* allocated pointers.  This is because the v4l core is going to
+* manage their deletion - separately, individually...  */
+   struct pvr2_v4l2_dev *dev_video;
+   struct pvr2_v4l2_dev *dev_radio;
 };
 
 static int video_nr[PVR_NUM] = {[0 ... PVR_NUM-1] = -1};
@@ -715,8 +716,26 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
 
 static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev *dip)
 {
-   printk(KERN_INFO pvrusb2: unregistering device video%d [%s]\n,
-  dip-devbase.minor,pvr2_config_get_name(dip-config));
+   enum pvr2_config cfg = dip-config;
+   int minor_id = dip-devbase.minor;
+   enum pvr2_v4l_type pvt;
+   struct pvr2_hdw *hdw = dip-v4lp-channel.mc_head-hdw;
+
+   switch (cfg) {
+   case pvr2_config_mpeg:
+   pvt = pvr2_v4l_type_video;
+   break;
+   case pvr2_config_vbi:
+   pvt = pvr2_v4l_type_vbi;
+   break;
+   case pvr2_config_radio:
+   pvt = pvr2_v4l_type_radio;
+   break;
+   default: /* paranoia */
+   pvt = pvr2_v4l_type_video;
+   break;
+   }
+   pvr2_hdw_v4l_store_minor_number(hdw,pvt,-1);
 
/* Paranoia */
dip-v4lp = NULL;
@@ -725,18 +744,40 @@ static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev 
*dip)
/* Actual deallocation happens later when all internal references
   are gone. */
video_unregister_device(dip-devbase);
+
+   switch (cfg) {
+   case pvr2_config_mpeg:
+   printk(KERN_INFO pvrusb2: unregistered device video%d [%s]\n,
+  minor_id  0x1f,
+  pvr2_config_get_name(cfg));
+   break;
+   case pvr2_config_radio:
+   printk(KERN_INFO pvrusb2: unregistered device radio%d [%s]\n,
+  minor_id  0x1f,
+  pvr2_config_get_name(cfg));
+   break;
+   case pvr2_config_vbi:
+   printk(KERN_INFO pvrusb2: unregistered device vbi%d [%s]\n,
+  minor_id  0x1f,
+  pvr2_config_get_name(cfg));
+   break;
+   default:
+   break;
+   }
+
 }
 
 
 static void pvr2_v4l2_destroy_no_lock(struct pvr2_v4l2 *vp)
 {
-   pvr2_hdw_v4l_store_minor_number(vp-channel.mc_head-hdw,
-   pvr2_v4l_type_video,-1);
-   pvr2_hdw_v4l_store_minor_number(vp-channel.mc_head-hdw,
-   pvr2_v4l_type_vbi,-1);
-   pvr2_hdw_v4l_store_minor_number(vp-channel.mc_head-hdw,
-   pvr2_v4l_type_radio,-1);
-   pvr2_v4l2_dev_destroy(vp-vdev);
+   if (vp-dev_video) {
+   pvr2_v4l2_dev_destroy(vp-dev_video);
+   vp-dev_video = 0;
+   }
+   if (vp-dev_radio) {
+   pvr2_v4l2_dev_destroy(vp-dev_radio);
+   vp-dev_radio = 0;
+   }
 
pvr2_trace(PVR2_TRACE_STRUCT,Destroying pvr2_v4l2 id=%p,vp);
pvr2_channel_done(vp-channel);
@@ -1085,7 +1126,7 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
dip-config = cfg;
 
 
-   switch (cfg) {
+   switch (dip-config) {
case pvr2_config_mpeg:
v4l_type = VFL_TYPE_GRABBER;
pvt = pvr2_v4l_type_video;
@@ -1107,7 +1148,7 @@ static void 

V4L/DVB (5046): Pvrusb2: Fix tuner frequency calculation

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5a8a0a16422eec744ec220ccea472eef74b67180
Commit: 5a8a0a16422eec744ec220ccea472eef74b67180
Parent: 0f0f257b7b46cc65c0f8f6f30444005b9c255e79
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:21:34 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:31 2007 -0200

V4L/DVB (5046): Pvrusb2: Fix tuner frequency calculation

A conversion from Hz to V4L frequency units was accidentally removed
by an earlier change.  Restore it.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
index 8d66ab1..c092083 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
@@ -146,7 +146,7 @@ static void set_frequency(struct pvr2_hdw *hdw)
fv = hdw-freqVal;
pvr2_trace(PVR2_TRACE_CHIPS,i2c v4l2 set_freq(%lu),fv);
memset(freq,0,sizeof(freq));
-   freq.frequency = fv;
+   freq.frequency = fv / 62500;
freq.tuner = 0;
freq.type = (hdw-input_val == PVR2_CVAL_INPUT_RADIO) ?
 V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5047): Pvrusb2: Fix tuning calculation when in radio mode

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f1382122ab49a7f01fa107608eaf664b12055b8b
Commit: f1382122ab49a7f01fa107608eaf664b12055b8b
Parent: 5a8a0a16422eec744ec220ccea472eef74b67180
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:23:22 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:32 2007 -0200

V4L/DVB (5047): Pvrusb2: Fix tuning calculation when in radio mode

Frequency units in V4L2 are apparently different when in radio mode
compared to tv mode.  Why?  Who knows.  This change adapts the driver
appropriately - so that internally we always only deal in Hz and don't
have to muck with craziness like this.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c |   11 ---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
index c092083..c885a9c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c
@@ -146,10 +146,15 @@ static void set_frequency(struct pvr2_hdw *hdw)
fv = hdw-freqVal;
pvr2_trace(PVR2_TRACE_CHIPS,i2c v4l2 set_freq(%lu),fv);
memset(freq,0,sizeof(freq));
-   freq.frequency = fv / 62500;
+   if (hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
+   // ((fv * 1000) / 62500)
+   freq.frequency = (fv * 2) / 125;
+   freq.type = V4L2_TUNER_RADIO;
+   } else {
+   freq.frequency = fv / 62500;
+   freq.type = V4L2_TUNER_ANALOG_TV;
+   }
freq.tuner = 0;
-   freq.type = (hdw-input_val == PVR2_CVAL_INPUT_RADIO) ?
-V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
pvr2_i2c_core_cmd(hdw,VIDIOC_S_FREQUENCY,freq);
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5048): Pvrusb2: v4l2 API implementation frequency tweaks

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c0e69315edd1d6901a021b85e0eea397444df702
Commit: c0e69315edd1d6901a021b85e0eea397444df702
Parent: f1382122ab49a7f01fa107608eaf664b12055b8b
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:25:06 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:32 2007 -0200

V4L/DVB (5048): Pvrusb2: v4l2 API implementation frequency tweaks

Report and set correctly converted frequency to/from a V4L2 app.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   26 ++
 1 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index d5a54e8..f747279 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -388,9 +388,15 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
case VIDIOC_S_FREQUENCY:
{
const struct v4l2_frequency *vf = (struct v4l2_frequency *)arg;
+   unsigned long fv;
+   fv = vf-frequency;
+   if (vf-type == V4L2_TUNER_RADIO) {
+   fv = (fv * 125) / 2;
+   } else {
+   fv = fv * 62500;
+   }
ret = pvr2_ctrl_set_value(
-   pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_FREQUENCY),
-   vf-frequency * 62500);
+   pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_FREQUENCY),fv);
break;
}
 
@@ -398,11 +404,23 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
{
struct v4l2_frequency *vf = (struct v4l2_frequency *)arg;
int val = 0;
+   int cur_input = PVR2_CVAL_INPUT_TV;
ret = pvr2_ctrl_get_value(
pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_FREQUENCY),
val);
-   val /= 62500;
-   vf-frequency = val;
+   if (ret != 0) break;
+   pvr2_ctrl_get_value(
+   pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
+   cur_input);
+   if (cur_input == PVR2_CVAL_INPUT_RADIO) {
+   val = (val * 2) / 125;
+   vf-frequency = val;
+   vf-type = V4L2_TUNER_RADIO;
+   } else {
+   val /= 62500;
+   vf-frequency = val;
+   vf-type = V4L2_TUNER_ANALOG_TV;
+   }
break;
}
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5049): Pvrusb2: Enable radio mode for 24xxx devices

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2083230084cee50580ee730cd26669704f7939b9
Commit: 2083230084cee50580ee730cd26669704f7939b9
Parent: c0e69315edd1d6901a021b85e0eea397444df702
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:26:55 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:32 2007 -0200

V4L/DVB (5049): Pvrusb2: Enable radio mode for 24xxx devices

These changes implement correct audio routing for radio mode on a
24xxx device.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c |2 +-
 drivers/media/video/pvrusb2/pvrusb2-wm8775.c  |   16 +++-
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c 
b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
index 8df969c..c2a154e 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -63,6 +63,7 @@ static void set_input(struct pvr2_v4l_cx2584x *ctxt)
vid_input = CX25840_COMPOSITE7;
aud_input = CX25840_AUDIO8;
break;
+   case PVR2_CVAL_INPUT_RADIO: // Treat same as composite
case PVR2_CVAL_INPUT_COMPOSITE:
vid_input = CX25840_COMPOSITE3;
aud_input = CX25840_AUDIO_SERIAL;
@@ -71,7 +72,6 @@ static void set_input(struct pvr2_v4l_cx2584x *ctxt)
vid_input = CX25840_SVIDEO1;
aud_input = CX25840_AUDIO_SERIAL;
break;
-   case PVR2_CVAL_INPUT_RADIO:
default:
// Just set it to be composite input for now...
vid_input = CX25840_COMPOSITE3;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-wm8775.c 
b/drivers/media/video/pvrusb2/pvrusb2-wm8775.c
index 7794c34..3f6bc4b 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-wm8775.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-wm8775.c
@@ -50,15 +50,21 @@ static void set_input(struct pvr2_v4l_wm8775 *ctxt)
 {
struct v4l2_routing route;
struct pvr2_hdw *hdw = ctxt-hdw;
-   int msk = 0;
 
memset(route,0,sizeof(route));
 
-   pvr2_trace(PVR2_TRACE_CHIPS,i2c wm8775 set_input(val=%d msk=0x%x),
-  hdw-input_val,msk);
+   switch(hdw-input_val) {
+   case PVR2_CVAL_INPUT_RADIO:
+   route.input = 1;
+   break;
+   default:
+   /* All other cases just use the second input */
+   route.input = 2;
+   break;
+   }
+   pvr2_trace(PVR2_TRACE_CHIPS,i2c wm8775 set_input(val=%d route=0x%x),
+  hdw-input_val,route.input);
 
-   // Always point to input #1 no matter what
-   route.input = 2;
pvr2_i2c_client_cmd(ctxt-client,VIDIOC_INT_S_AUDIO_ROUTING,route);
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5051): Pvrusb2: Better radio versus tv frequency handling

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1bde02891b3d4d17ee743584bb49ed5f275dff01
Commit: 1bde02891b3d4d17ee743584bb49ed5f275dff01
Parent: 5549f54f46c2375761f42cd2741364316e3b2a13
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:30:13 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:33 2007 -0200

V4L/DVB (5051): Pvrusb2: Better radio versus tv frequency handling

Separate track radio versus tv frequency so that when we switch modes
we can also switch to a sane frequency appropriate for the mode.  Also
implement logic to automate mode switching in certain cases.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h |   11 +-
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |  213 +---
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c |2 +-
 3 files changed, 196 insertions(+), 30 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
index da29ae2..b9df52c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -214,7 +214,6 @@ struct pvr2_hdw {
/* Frequency table */
unsigned int freqTable[FREQTABLE_SIZE];
unsigned int freqProgSlot;
-   unsigned int freqSlot;
 
/* Stuff for handling low level control interaction with device */
struct mutex ctl_lock_mutex;
@@ -260,7 +259,11 @@ struct pvr2_hdw {
/* Tuner / frequency control stuff */
unsigned int tuner_type;
int tuner_updated;
-   unsigned int freqVal;
+   unsigned int freqValTelevision;  /* Current freq for tv mode */
+   unsigned int freqValRadio;   /* Current freq for radio mode */
+   unsigned int freqSlotTelevision; /* Current slot for tv mode */
+   unsigned int freqSlotRadio;  /* Current slot for radio mode */
+   unsigned int freqSelector;   /* 0=radio 1=television */
int freqDirty;
 
/* Video standard handling */
@@ -323,6 +326,7 @@ struct pvr2_hdw {
VCREATE_DATA(res_hor);
VCREATE_DATA(res_ver);
VCREATE_DATA(srate);
+   VCREATE_DATA(automodeswitch);
 #undef VCREATE_DATA
 
struct pvr2_ctld_info *mpeg_ctrl_info;
@@ -331,6 +335,9 @@ struct pvr2_hdw {
unsigned int control_cnt;
 };
 
+/* This function gets the current frequency */
+unsigned long pvr2_hdw_get_cur_freq(struct pvr2_hdw *);
+
 #endif /* __PVRUSB2_HDW_INTERNAL_H */
 
 /*
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 04e7469..38e1659 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -37,10 +37,9 @@
 #include pvrusb2-encoder.h
 #include pvrusb2-debug.h
 
-#define TV_MIN_FREQ 5525L
-#define TV_MAX_FREQ 85000L
-
-#define RADIO_MIN_FREQ 8700L
+#define TV_MIN_FREQ 5525L
+#define TV_MAX_FREQ85000L
+#define RADIO_MIN_FREQ  8700L
 #define RADIO_MAX_FREQ 10800L
 
 struct usb_device_id pvr2_device_table[] = {
@@ -95,6 +94,7 @@ static int procreload = 0;
 static int tuner[PVR_NUM] = { [0 ... PVR_NUM-1] = -1 };
 static int tolerance[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 };
 static int video_std[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 };
+static int auto_mode_switch[PVR_NUM];
 static int init_pause_msec = 0;
 
 module_param(ctlchg, int, S_IRUGO|S_IWUSR);
@@ -112,6 +112,8 @@ module_param_array(video_std,int, NULL, 0444);
 MODULE_PARM_DESC(video_std,specify initial video standard);
 module_param_array(tolerance,int, NULL, 0444);
 MODULE_PARM_DESC(tolerance,specify stream error tolerance);
+module_param_array(auto_mode_switch,int, NULL, 0444);
+MODULE_PARM_DESC(auto_mode_switch,Enable TV/Radio automatic mode switch based 
on freq);
 
 #define PVR2_CTL_WRITE_ENDPOINT  0x01
 #define PVR2_CTL_READ_ENDPOINT   0x81
@@ -258,6 +260,7 @@ static const char *control_values_subsystem[] = {
[PVR2_SUBSYS_B_ENC_RUN] = enc_run,
 };
 
+static void pvr2_hdw_set_cur_freq(struct pvr2_hdw *,unsigned long);
 static int pvr2_hdw_cmd_usbstream(struct pvr2_hdw *hdw,int runFl);
 static int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw *hdw);
 static int pvr2_hdw_get_eeprom_addr(struct pvr2_hdw *hdw);
@@ -292,8 +295,21 @@ static int ctrl_channelfreq_get(struct pvr2_ctrl *cptr,int 
*vp)
 static int ctrl_channelfreq_set(struct pvr2_ctrl *cptr,int m,int v)
 {
struct pvr2_hdw *hdw = cptr-hdw;
-   if ((hdw-freqProgSlot  0)  (hdw-freqProgSlot = FREQTABLE_SIZE)) {
-   hdw-freqTable[hdw-freqProgSlot-1] = v;
+   unsigned int slotId = hdw-freqProgSlot;
+   if ((slotId  0)  (slotId = FREQTABLE_SIZE)) {
+   hdw-freqTable[slotId-1] = v;
+   /* Handle side 

V4L/DVB (5052): Pvrusb2: Remove stream claiming hack from /dev/radio

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=62f5fdace7774a45e75e4d651237e7e1e8f05327
Commit: 62f5fdace7774a45e75e4d651237e7e1e8f05327
Parent: 1bde02891b3d4d17ee743584bb49ed5f275dff01
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:33:00 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:33 2007 -0200

V4L/DVB (5052): Pvrusb2: Remove stream claiming hack from /dev/radio

Trying to temporarily check that the stream is not claimed during open
of the radio device is at best a race condition.  What's to stop
another app from claiming the stream anyway the instant after the
check is done?  The implementation for this was dicey anyway.  So it's
removed.  The only price for this is that if /dev/radioX is opened
while streaming video, then the video stream is just going to switch
to radio mode anyway.  If a user does this, he gets what he expects...

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-context.c |   11 --
 drivers/media/video/pvrusb2/pvrusb2-context.h |2 -
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c|   27 +---
 3 files changed, 6 insertions(+), 34 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.c 
b/drivers/media/video/pvrusb2/pvrusb2-context.c
index 69786cd..cf12974 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.c
@@ -188,17 +188,6 @@ void pvr2_channel_done(struct pvr2_channel *cp)
 }
 
 
-int pvr2_channel_check_stream_no_lock(struct pvr2_channel *cp,
- struct pvr2_context_stream *sp)
-{
-   if (sp == cp-stream) return 0;
-   if (sp-user) {
-   return -EBUSY;
-   }
-   return 0;
-}
-
-
 int pvr2_channel_claim_stream(struct pvr2_channel *cp,
  struct pvr2_context_stream *sp)
 {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.h 
b/drivers/media/video/pvrusb2/pvrusb2-context.h
index 4d0f4ad..6327fa1 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.h
@@ -76,8 +76,6 @@ void pvr2_channel_init(struct pvr2_channel *,struct 
pvr2_context *);
 void pvr2_channel_done(struct pvr2_channel *);
 int pvr2_channel_claim_stream(struct pvr2_channel *,
  struct pvr2_context_stream *);
-int pvr2_channel_check_stream_no_lock(struct pvr2_channel *,
- struct pvr2_context_stream *);
 struct pvr2_ioread *pvr2_channel_create_mpeg_stream(
struct pvr2_context_stream *);
 
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index f747279..cc3260f 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -925,29 +925,14 @@ static int pvr2_v4l2_open(struct inode *inode, struct 
file *file)
pvr2_trace(PVR2_TRACE_STRUCT,Creating pvr_v4l2_fh id=%p,fhp);
pvr2_channel_init(fhp-channel,vp-channel.mc_head);
 
-   /* pk: warning, severe ugliness follows. 18+ only.
-  please blaim V4L(ivtv) for braindamaged interfaces,
-  not the implementor. This is probably flawed, but
-  suggestions on how to do this right are welcome! */
+   /* Opening the /dev/radioX device implies a mode switch.
+  So execute that here.  Note that you can get the
+  IDENTICAL effect merely by opening the normal video
+  device and setting the input appropriately. */
if (dip-config == pvr2_config_radio) {
-   int ret;
-   if ((pvr2_channel_check_stream_no_lock(fhp-channel,
- fhp-dev_info-stream)) != 0) {
-   /* We can 't switch modes while streaming */
-   pvr2_channel_done(fhp-channel);
-   kfree(fhp);
-   pvr2_context_exit(vp-channel.mc_head);
-   return -EBUSY;
-   }
-
-   if ((ret = pvr2_ctrl_set_value(
+   pvr2_ctrl_set_value(
pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
- PVR2_CVAL_INPUT_RADIO))) {
-   pvr2_channel_done(fhp-channel);
-   kfree(fhp);
-   pvr2_context_exit(vp-channel.mc_head);
-   return ret;
-   }
+   PVR2_CVAL_INPUT_RADIO);
}
 
fhp-vnext = NULL;
-
To 

V4L/DVB (5053): Pvrusb2: Change default volume to something sane

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=139eecf94cf5ab1f9749874cd362db5bff7dc09c
Commit: 139eecf94cf5ab1f9749874cd362db5bff7dc09c
Parent: 62f5fdace7774a45e75e4d651237e7e1e8f05327
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Wed Dec 27 23:36:33 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:34 2007 -0200

V4L/DVB (5053): Pvrusb2: Change default volume to something sane

The default volume of 65535 is too high.  Make is something smaller.
Note that this _only_ changes the default value.  Specifically, there
are no scaling or other more intrusive changes here.  I'm just sick of
constantly having to reduce the volume every time I plug in and test
the device!  (And unfortunately we can't do a better fix like scaling
the volume so that 65535 makes sense because doing so will screw up
any app - like MythTV - which expects the old scaling.)  Too bad V4L
controls don't have better defined ranges.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 38e1659..bb4c515 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -770,7 +770,7 @@ static const struct pvr2_ctl_info control_defs[] = {
.v4l_id = V4L2_CID_AUDIO_VOLUME,
.desc = Volume,
.name = volume,
-   .default_value = 65535,
+   .default_value = 62000,
DEFREF(volume),
DEFINT(0,65535),
},{
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5056): Pvrusb2: Fix cut/paste bug in auto_mode_switch control

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f13ed249ed8b880fe5497aaa05999bff8328a973
Commit: f13ed249ed8b880fe5497aaa05999bff8328a973
Parent: 7a4a3770dd37a7c87a2a8a7b8e7387527cdb34e7
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Dec 30 18:24:35 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:34 2007 -0200

V4L/DVB (5056): Pvrusb2: Fix cut/paste bug in auto_mode_switch control

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index bb4c515..aa76302 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -834,7 +834,6 @@ static const struct pvr2_ctl_info control_defs[] = {
.get_max_value = ctrl_vres_max_get,
.get_min_value = ctrl_vres_min_get,
},{
-   .v4l_id = V4L2_CID_AUDIO_MUTE,
.desc = Automatic TV / Radio mode switch based on frequency,
.name = auto_mode_switch,
.default_value = 0,
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5076): Cpia.c: buffer overflow

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=13071f0a58f285eee81f63c917078bb2a48cf51e
Commit: 13071f0a58f285eee81f63c917078bb2a48cf51e
Parent: c74e0062684bc034a003289e2e2023f0e9ff747c
Author: Alexey Dobriyan [EMAIL PROTECTED]
AuthorDate: Sun Jan 14 15:29:42 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:35 2007 -0200

V4L/DVB (5076): Cpia.c: buffer overflow

If assigned minor is 10 or greater, terminator will be put beyound the end.

Signed-off-by: Alexey Dobriyan [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cpia.c |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/cpia.c b/drivers/media/video/cpia.c
index 735a52a..78c9699 100644
--- a/drivers/media/video/cpia.c
+++ b/drivers/media/video/cpia.c
@@ -1350,13 +1350,13 @@ out:
 
 static void create_proc_cpia_cam(struct cam_data *cam)
 {
-   char name[7];
+   char name[5 + 1 + 10 + 1];
struct proc_dir_entry *ent;
 
if (!cpia_proc_root || !cam)
return;
 
-   sprintf(name, video%d, cam-vdev.minor);
+   snprintf(name, sizeof(name), video%d, cam-vdev.minor);
 
ent = create_proc_entry(name, S_IFREG|S_IRUGO|S_IWUSR, cpia_proc_root);
if (!ent)
@@ -1376,12 +1376,12 @@ static void create_proc_cpia_cam(struct cam_data *cam)
 
 static void destroy_proc_cpia_cam(struct cam_data *cam)
 {
-   char name[7];
+   char name[5 + 1 + 10 + 1];
 
if (!cam || !cam-proc_entry)
return;
 
-   sprintf(name, video%d, cam-vdev.minor);
+   snprintf(name, sizeof(name), video%d, cam-vdev.minor);
remove_proc_entry(name, cpia_proc_root);
cam-proc_entry = NULL;
 }
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5059): Pvrusb2: Be smarter about mode restoration

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c74e0062684bc034a003289e2e2023f0e9ff747c
Commit: c74e0062684bc034a003289e2e2023f0e9ff747c
Parent: cdef8bd8c6ab69407afaf78226cc9861f916c83d
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Dec 30 18:31:22 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:35 2007 -0200

V4L/DVB (5059): Pvrusb2: Be smarter about mode restoration

Switch back to the previous input selection when the radio device is
closed - but only do that if the current input selection is still the
radio (i.e. it appears that it hasn't been messed with).

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   53 +--
 1 files changed, 33 insertions(+), 20 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 8b9089c..0ecad5b 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -57,6 +57,7 @@ struct pvr2_v4l2_fh {
struct pvr2_v4l2_fh *vprev;
wait_queue_head_t wait_data;
int fw_mode_flag;
+   int prev_input_val;
 };
 
 struct pvr2_v4l2 {
@@ -837,13 +838,12 @@ static int pvr2_v4l2_release(struct inode *inode, struct 
file *file)
struct pvr2_v4l2_fh *fhp = file-private_data;
struct pvr2_v4l2 *vp = fhp-vhead;
struct pvr2_context *mp = fhp-vhead-channel.mc_head;
+   struct pvr2_hdw *hdw = fhp-channel.mc_head-hdw;
 
pvr2_trace(PVR2_TRACE_OPEN_CLOSE,pvr2_v4l2_release);
 
if (fhp-rhp) {
struct pvr2_stream *sp;
-   struct pvr2_hdw *hdw;
-   hdw = fhp-channel.mc_head-hdw;
pvr2_hdw_set_streaming(hdw,0);
sp = pvr2_ioread_get_stream(fhp-rhp);
if (sp) pvr2_stream_set_callback(sp,NULL,NULL);
@@ -855,6 +855,20 @@ static int pvr2_v4l2_release(struct inode *inode, struct 
file *file)
file-private_data = NULL;
 
pvr2_context_enter(mp); do {
+   /* Restore the previous input selection, if it makes sense
+  to do so. */
+   if (fhp-dev_info-v4l_type == VFL_TYPE_RADIO) {
+   struct pvr2_ctrl *cp;
+   int pval;
+   cp = pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT);
+   pvr2_ctrl_get_value(cp,pval);
+   /* Only restore if we're still selecting the radio */
+   if (pval == PVR2_CVAL_INPUT_RADIO) {
+   pvr2_ctrl_set_value(cp,fhp-prev_input_val);
+   pvr2_hdw_commit_ctl(hdw);
+   }
+   }
+
if (fhp-vnext) {
fhp-vnext-vprev = fhp-vprev;
} else {
@@ -913,17 +927,6 @@ static int pvr2_v4l2_open(struct inode *inode, struct file 
*file)
pvr2_trace(PVR2_TRACE_STRUCT,Creating pvr_v4l2_fh id=%p,fhp);
pvr2_channel_init(fhp-channel,vp-channel.mc_head);
 
-   /* Opening the /dev/radioX device implies a mode switch.
-  So execute that here.  Note that you can get the
-  IDENTICAL effect merely by opening the normal video
-  device and setting the input appropriately. */
-   if (dip-v4l_type == VFL_TYPE_RADIO) {
-   pvr2_ctrl_set_value(
-   pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
-   PVR2_CVAL_INPUT_RADIO);
-   pvr2_hdw_commit_ctl(hdw);
-   }
-
fhp-vnext = NULL;
fhp-vprev = vp-vlast;
if (vp-vlast) {
@@ -933,6 +936,18 @@ static int pvr2_v4l2_open(struct inode *inode, struct file 
*file)
}
vp-vlast = fhp;
fhp-vhead = vp;
+
+   /* Opening the /dev/radioX device implies a mode switch.
+  So execute that here.  Note that you can get the
+  IDENTICAL effect merely by opening the normal video
+  device and setting the input appropriately. */
+   if (dip-v4l_type == VFL_TYPE_RADIO) {
+   struct pvr2_ctrl *cp;
+   cp = pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT);
+   pvr2_ctrl_get_value(cp,fhp-prev_input_val);
+   pvr2_ctrl_set_value(cp,PVR2_CVAL_INPUT_RADIO);
+   pvr2_hdw_commit_ctl(hdw);
+   }
} while (0); pvr2_context_exit(vp-channel.mc_head);
 
fhp-file = file;
@@ -1117,6 +1132,11 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
dip-config = pvr2_config_mpeg;

V4L/DVB (5058): Pvrusb2: bug fix involving switch into radio mode

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cdef8bd8c6ab69407afaf78226cc9861f916c83d
Commit: cdef8bd8c6ab69407afaf78226cc9861f916c83d
Parent: 16eb40d37d5dd4dba85245899388d2d44eb0bc2a
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Dec 30 18:30:12 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:35 2007 -0200

V4L/DVB (5058): Pvrusb2: bug fix involving switch into radio mode

When the input is switched by opening /dev/radioX, we must also commit
that change into the driver core.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 7a8b34d..8b9089c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -921,6 +921,7 @@ static int pvr2_v4l2_open(struct inode *inode, struct file 
*file)
pvr2_ctrl_set_value(
pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
PVR2_CVAL_INPUT_RADIO);
+   pvr2_hdw_commit_ctl(hdw);
}
 
fhp-vnext = NULL;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5057): Pvrusb2: Stream configuration cleanups

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=16eb40d37d5dd4dba85245899388d2d44eb0bc2a
Commit: 16eb40d37d5dd4dba85245899388d2d44eb0bc2a
Parent: f13ed249ed8b880fe5497aaa05999bff8328a973
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Dec 30 18:27:32 2006 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:34 2007 -0200

V4L/DVB (5057): Pvrusb2: Stream configuration cleanups

Clean up and tighten logic involving stream configuration.  This
mainly involves changes to pvrusb2-v4l2.c, where we better clarify how
we use the stream configuration enum and implement a cleaner means to
control streaming for a given device node.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-encoder.c |   20 ++-
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |3 +-
 drivers/media/video/pvrusb2/pvrusb2-hdw.h |9 +-
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c|  186 ++---
 4 files changed, 94 insertions(+), 124 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-encoder.c 
b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
index d094cac..3ec8093 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-encoder.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
@@ -363,15 +363,19 @@ int pvr2_encoder_start(struct pvr2_hdw *hdw)
pvr2_encoder_vcmd(hdw,CX2341X_ENC_MUTE_VIDEO,1,
  hdw-input_val == PVR2_CVAL_INPUT_RADIO ? 1 : 0);
 
-   if (hdw-config == pvr2_config_vbi) {
+   switch (hdw-config) {
+   case pvr2_config_vbi:
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
   0x01,0x14);
-   } else if (hdw-config == pvr2_config_mpeg) {
+   break;
+   case pvr2_config_mpeg:
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
   0,0x13);
-   } else {
+   break;
+   default: /* Unhandled cases for now */
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_START_CAPTURE,2,
   0,0x13);
+   break;
}
if (!status) {
hdw-subsys_enabled_mask |= (1PVR2_SUBSYS_B_ENC_RUN);
@@ -386,15 +390,19 @@ int pvr2_encoder_stop(struct pvr2_hdw *hdw)
/* mask all interrupts */
pvr2_write_register(hdw, 0x0048, 0x);
 
-   if (hdw-config == pvr2_config_vbi) {
+   switch (hdw-config) {
+   case pvr2_config_vbi:
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_STOP_CAPTURE,3,
   0x01,0x01,0x14);
-   } else if (hdw-config == pvr2_config_mpeg) {
+   break;
+   case pvr2_config_mpeg:
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_STOP_CAPTURE,3,
   0x01,0,0x13);
-   } else {
+   break;
+   default: /* Unhandled cases for now */
status = pvr2_encoder_vcmd(hdw,CX2341X_ENC_STOP_CAPTURE,3,
   0x01,0,0x13);
+   break;
}
 
/* change some GPIO data */
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index aa76302..2de5951 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -957,7 +957,8 @@ const char *pvr2_config_get_name(enum pvr2_config cfg)
case pvr2_config_empty: return empty;
case pvr2_config_mpeg: return mpeg;
case pvr2_config_vbi: return vbi;
-   case pvr2_config_radio: return radio;
+   case pvr2_config_pcm: return pcm;
+   case pvr2_config_rawvideo: return raw video;
}
return unknown;
 }
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
index 19af4d6..d803f24 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.h
@@ -72,10 +72,11 @@
PVR2_SUBSYS_RUN_ALL )
 
 enum pvr2_config {
-   pvr2_config_empty,
-   pvr2_config_mpeg,
-   pvr2_config_vbi,
-   pvr2_config_radio,
+   pvr2_config_empty,/* No configuration */
+   pvr2_config_mpeg, /* Encoded / compressed video */
+   pvr2_config_vbi,  /* Standard vbi info */
+   pvr2_config_pcm,  /* Audio raw pcm stream */
+   pvr2_config_rawvideo, /* Video raw frames */
 };
 
 enum pvr2_v4l_type {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index cc3260f..7a8b34d 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -40,7 +40,10 @@ struct pvr2_v4l2_dev {
struct video_device devbase; /* MUST be first! 

V4L/DVB (5078): Pvrusb2: It's safe to kfree() a null pointer

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6710fb868b289d21139bd68262388e0ea34601eb
Commit: 6710fb868b289d21139bd68262388e0ea34601eb
Parent: e5bd0260e7d3d806e66c12859f50733dca43bbcf
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:02:26 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:37 2007 -0200

V4L/DVB (5078): Pvrusb2: It's safe to kfree() a null pointer

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 0ecad5b..4c2e4de 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -1189,8 +1189,8 @@ struct pvr2_v4l2 *pvr2_v4l2_create(struct pvr2_context 
*mnp)
vp-dev_video = kmalloc(sizeof(*vp-dev_video),GFP_KERNEL);
vp-dev_radio = kmalloc(sizeof(*vp-dev_radio),GFP_KERNEL);
if (!(vp-dev_video  vp-dev_radio)) {
-   if (vp-dev_video) kfree(vp-dev_video);
-   if (vp-dev_radio) kfree(vp-dev_radio);
+   kfree(vp-dev_video);
+   kfree(vp-dev_radio);
kfree(vp);
return NULL;
}
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5079): Pvrusb2: Use kzalloc instead of kmalloc+memset pairs

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4b85dee6a05dd963a13bd1230fafc060bf45ae45
Commit: 4b85dee6a05dd963a13bd1230fafc060bf45ae45
Parent: 6710fb868b289d21139bd68262388e0ea34601eb
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:03:32 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:37 2007 -0200

V4L/DVB (5079): Pvrusb2: Use kzalloc instead of kmalloc+memset pairs

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   12 
 1 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 4c2e4de..9890c75 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -914,11 +914,10 @@ static int pvr2_v4l2_open(struct inode *inode, struct 
file *file)
return -EIO;
}
 
-   fhp = kmalloc(sizeof(*fhp),GFP_KERNEL);
+   fhp = kzalloc(sizeof(*fhp),GFP_KERNEL);
if (!fhp) {
return -ENOMEM;
}
-   memset(fhp,0,sizeof(*fhp));
 
init_waitqueue_head(fhp-wait_data);
fhp-dev_info = dip;
@@ -1183,19 +1182,16 @@ struct pvr2_v4l2 *pvr2_v4l2_create(struct pvr2_context 
*mnp)
 {
struct pvr2_v4l2 *vp;
 
-   vp = kmalloc(sizeof(*vp),GFP_KERNEL);
+   vp = kzalloc(sizeof(*vp),GFP_KERNEL);
if (!vp) return vp;
-   memset(vp,0,sizeof(*vp));
-   vp-dev_video = kmalloc(sizeof(*vp-dev_video),GFP_KERNEL);
-   vp-dev_radio = kmalloc(sizeof(*vp-dev_radio),GFP_KERNEL);
+   vp-dev_video = kzalloc(sizeof(*vp-dev_video),GFP_KERNEL);
+   vp-dev_radio = kzalloc(sizeof(*vp-dev_radio),GFP_KERNEL);
if (!(vp-dev_video  vp-dev_radio)) {
kfree(vp-dev_video);
kfree(vp-dev_radio);
kfree(vp);
return NULL;
}
-   memset(vp-dev_video,0,sizeof(*vp-dev_video));
-   memset(vp-dev_radio,0,sizeof(*vp-dev_radio));
pvr2_channel_init(vp-channel,mnp);
pvr2_trace(PVR2_TRACE_STRUCT,Creating pvr2_v4l2 id=%p,vp);
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5080): Pvrusb2: Allow streaming from /dev/radioX

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=af78a48b69231e129db0e1db24053da22f8eed6d
Commit: af78a48b69231e129db0e1db24053da22f8eed6d
Parent: 4b85dee6a05dd963a13bd1230fafc060bf45ae45
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:04:31 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:37 2007 -0200

V4L/DVB (5080): Pvrusb2: Allow streaming from /dev/radioX

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 9890c75..655a722 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -1143,7 +1143,8 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
nr_ptr = vbi_nr;
break;
case VFL_TYPE_RADIO:
-   dip-config = pvr2_config_pcm;
+   dip-stream = vp-channel.mc_head-video_stream;
+   dip-config = pvr2_config_mpeg;
dip-minor_type = pvr2_v4l_type_radio;
nr_ptr = radio_nr;
break;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5081): Pvrusb2: VIDIOC_G_TUNER cleanup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=18103c57b0168ebc0401702d483fe131f0aecc7a
Commit: 18103c57b0168ebc0401702d483fe131f0aecc7a
Parent: af78a48b69231e129db0e1db24053da22f8eed6d
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:09:47 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:38 2007 -0200

V4L/DVB (5081): Pvrusb2: VIDIOC_G_TUNER cleanup

Clean up use of VIDIOC_G_TUNER; we now correctly gather info from all
the I2C client modules.  Also abide by V4L2_TUNER_CAP_LOW
appropriately.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-audio.c|   24 -
 drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c  |   13 ---
 drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h |   16 +---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |   99 
 drivers/media/video/pvrusb2/pvrusb2-hdw.h  |   13 +--
 .../media/video/pvrusb2/pvrusb2-i2c-chips-v4l2.c   |1 +
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.c |   19 -
 drivers/media/video/pvrusb2/pvrusb2-i2c-cmd-v4l2.h |1 +
 drivers/media/video/pvrusb2/pvrusb2-i2c-core.c |   22 +
 drivers/media/video/pvrusb2/pvrusb2-i2c-core.h |3 +
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   85 +++---
 drivers/media/video/pvrusb2/pvrusb2-video-v4l.c|   13 ---
 12 files changed, 144 insertions(+), 165 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-audio.c 
b/drivers/media/video/pvrusb2/pvrusb2-audio.c
index 122496f..5d30c93 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-audio.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-audio.c
@@ -31,7 +31,6 @@ struct pvr2_msp3400_handler {
struct pvr2_hdw *hdw;
struct pvr2_i2c_client *client;
struct pvr2_i2c_handler i2c_handler;
-   struct pvr2_audio_stat astat;
unsigned long stale_mask;
 };
 
@@ -126,27 +125,9 @@ static void msp3400_update(struct pvr2_msp3400_handler 
*ctxt)
 }
 
 
-/* This reads back the current signal type */
-static int get_audio_status(struct pvr2_msp3400_handler *ctxt)
-{
-   struct v4l2_tuner vt;
-   int stat;
-
-   memset(vt,0,sizeof(vt));
-   stat = pvr2_i2c_client_cmd(ctxt-client,VIDIOC_G_TUNER,vt);
-   if (stat  0) return stat;
-
-   ctxt-hdw-flag_stereo = (vt.audmode  V4L2_TUNER_MODE_STEREO) != 0;
-   ctxt-hdw-flag_bilingual =
-   (vt.audmode  V4L2_TUNER_MODE_LANG2) != 0;
-   return 0;
-}
-
-
 static void pvr2_msp3400_detach(struct pvr2_msp3400_handler *ctxt)
 {
ctxt-client-handler = NULL;
-   ctxt-hdw-audio_stat = NULL;
kfree(ctxt);
 }
 
@@ -169,7 +150,6 @@ static const struct pvr2_i2c_handler_functions 
msp3400_funcs = {
 int pvr2_i2c_msp3400_setup(struct pvr2_hdw *hdw,struct pvr2_i2c_client *cp)
 {
struct pvr2_msp3400_handler *ctxt;
-   if (hdw-audio_stat) return 0;
if (cp-handler) return 0;
 
ctxt = kmalloc(sizeof(*ctxt),GFP_KERNEL);
@@ -180,13 +160,9 @@ int pvr2_i2c_msp3400_setup(struct pvr2_hdw *hdw,struct 
pvr2_i2c_client *cp)
ctxt-i2c_handler.func_table = msp3400_funcs;
ctxt-client = cp;
ctxt-hdw = hdw;
-   ctxt-astat.ctxt = ctxt;
-   ctxt-astat.status = (int (*)(void *))get_audio_status;
-   ctxt-astat.detach = (void (*)(void *))pvr2_msp3400_detach;
ctxt-stale_mask = (1  (sizeof(msp3400_ops)/
  sizeof(msp3400_ops[0]))) - 1;
cp-handler = ctxt-i2c_handler;
-   hdw-audio_stat = ctxt-astat;
pvr2_trace(PVR2_TRACE_CHIPS,i2c 0x%x msp3400 V4L2 handler set up,
   cp-client-addr);
return !0;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c 
b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
index c2a154e..a3357bf 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -199,18 +199,6 @@ static int decoder_detect(struct pvr2_i2c_client *cp)
 }
 
 
-static int decoder_is_tuned(struct pvr2_v4l_cx2584x *ctxt)
-{
-   struct v4l2_tuner vt;
-   int ret;
-
-   memset(vt,0,sizeof(vt));
-   ret = pvr2_i2c_client_cmd(ctxt-client,VIDIOC_G_TUNER,vt);
-   if (ret  0) return -EINVAL;
-   return vt.signal ? 1 : 0;
-}
-
-
 static unsigned int decoder_describe(struct pvr2_v4l_cx2584x *ctxt,
 char *buf,unsigned int cnt)
 {
@@ -252,7 +240,6 @@ int pvr2_i2c_cx2584x_v4l_setup(struct pvr2_hdw *hdw,
ctxt-ctrl.ctxt = ctxt;
ctxt-ctrl.detach = (void (*)(void *))decoder_detach;
ctxt-ctrl.enable = (void (*)(void *,int))decoder_enable;
-   ctxt-ctrl.tuned = (int (*)(void *))decoder_is_tuned;
ctxt-ctrl.force_reset = (void (*)(void*))decoder_reset;
ctxt-client = cp;
ctxt-hdw 

V4L/DVB (5082): Pvrusb2: Slight debug printing efficiency fixup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fe23a2809d1f7f7df7da38652826933b8ce6
Commit: fe23a2809d1f7f7df7da38652826933b8ce6
Parent: 18103c57b0168ebc0401702d483fe131f0aecc7a
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:10:55 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:38 2007 -0200

V4L/DVB (5082): Pvrusb2: Slight debug printing efficiency fixup

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 4672199..7761254 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -2443,10 +2443,9 @@ static int pvr2_hdw_commit_ctl_internal(struct pvr2_hdw 
*hdw)
cptr = hdw-controls + idx;
if (cptr-info-is_dirty == 0) continue;
if (!cptr-info-is_dirty(cptr)) continue;
-   if (!commit_flag) {
-   commit_flag = !0;
-   }
+   commit_flag = !0;
 
+   if (!(pvrusb2_debug  PVR2_TRACE_CTL)) continue;
bcnt = scnprintf(buf,sizeof(buf),\%s\ -- ,
 cptr-info-name);
value = 0;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5087): Pvrusb2: Fix sizeof() calculation foul-up

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=293b5d94ebf1e591a6672d0c34d4559e935cd2dc
Commit: 293b5d94ebf1e591a6672d0c34d4559e935cd2dc
Parent: 11fc76c9a8b24984d5ff701bc1f77940e04d5077
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:27:01 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:40 2007 -0200

V4L/DVB (5087): Pvrusb2: Fix sizeof() calculation foul-up

This bug caused uninitalized data to be returned during a G_TUNER status 
poll.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-i2c-core.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
index 540233e..1a85079 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
@@ -597,7 +597,7 @@ void pvr2_i2c_core_status_poll(struct pvr2_hdw *hdw)
struct pvr2_i2c_client *cp;
mutex_lock(hdw-i2c_list_lock); do {
struct v4l2_tuner *vtp = hdw-tuner_signal_info;
-   memset(vtp,0,sizeof(vtp));
+   memset(vtp,0,sizeof(*vtp));
list_for_each(item,hdw-i2c_clients) {
cp = list_entry(item,struct pvr2_i2c_client,list);
if (!cp-detected_flag) continue;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5089): Pvrusb2: V4L EXT_CTRLS fixup

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c1c2680d922cd36338cf3efaf4ce0067c3e26eb1
Commit: c1c2680d922cd36338cf3efaf4ce0067c3e26eb1
Parent: af75453860569b6110fbf43c7113f52f698d37a3
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:30:23 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:40 2007 -0200

V4L/DVB (5089): Pvrusb2: V4L EXT_CTRLS fixup

Attempts to enumerate or operate on a group of EXT_CTRLS where the
group size is zero is OK; don't fail on such operations.  At least one
application uses this to probe for the existence of this API so let it
succeed.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 5b1260c..91c4225 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -636,6 +636,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
struct v4l2_ext_control *ctrl;
unsigned int idx;
int val;
+   ret = 0;
for (idx = 0; idx  ctls-count; idx++) {
ctrl = ctls-controls + idx;
ret = pvr2_ctrl_get_value(
@@ -658,6 +659,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
(struct v4l2_ext_controls *)arg;
struct v4l2_ext_control *ctrl;
unsigned int idx;
+   ret = 0;
for (idx = 0; idx  ctls-count; idx++) {
ctrl = ctls-controls + idx;
ret = pvr2_ctrl_set_value(
@@ -680,6 +682,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
unsigned int idx;
/* For the moment just validate that the requested control
   actually exists. */
+   ret = 0;
for (idx = 0; idx  ctls-count; idx++) {
ctrl = ctls-controls + idx;
pctl = pvr2_hdw_get_ctrl_v4l(hdw,ctrl-id);
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5086): Pvrusb2: Fix missing break statement on VIDIOC_S_TUNER

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=11fc76c9a8b24984d5ff701bc1f77940e04d5077
Commit: 11fc76c9a8b24984d5ff701bc1f77940e04d5077
Parent: 8433544ea9ebc4227bb5aaaf361b0a1879964f7d
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:24:52 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:39 2007 -0200

V4L/DVB (5086): Pvrusb2: Fix missing break statement on VIDIOC_S_TUNER

The lack of a break statement in the handling of VIDIOC_S_TUNER caused
errors to result.  Fixed.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 2a67638..5b1260c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -354,6 +354,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
ret = pvr2_ctrl_set_value(
pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_AUDIOMODE),
vt-audmode);
+   break;
}
 
case VIDIOC_S_FREQUENCY:
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5084): Pvrusb2: Stop hardcoding frequency ranges

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=644afdb9cc05107f3090817b6d00e90daa9a034b
Commit: 644afdb9cc05107f3090817b6d00e90daa9a034b
Parent: 7c74e57e6fb2ce986134e74634aeb78b3ea41a97
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:19:23 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:39 2007 -0200

V4L/DVB (5084): Pvrusb2: Stop hardcoding frequency ranges

Rather than hardcoding frequency ranges everywhere, rely on
VIDIOC_G_TUNER results wherever we can.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |   58 
 1 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 11890a0..819564c 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -39,8 +39,6 @@
 
 #define TV_MIN_FREQ 5525L
 #define TV_MAX_FREQ85000L
-#define RADIO_MIN_FREQ  8700L
-#define RADIO_MAX_FREQ 10800L
 
 struct usb_device_id pvr2_device_table[] = {
[PVR2_HDW_TYPE_29XXX] = { USB_DEVICE(0x2040, 0x2900) },
@@ -432,34 +430,48 @@ static void ctrl_cleardirty_input(struct pvr2_ctrl *cptr)
cptr-hdw-input_dirty = 0;
 }
 
-static int ctrl_freq_check(struct pvr2_ctrl *cptr,int v)
-{
-   /* Both ranges are simultaneously considered legal, in order to
-  permit implicit mode switching, i.e. set a frequency in the
-  other range and the mode will switch */
-   return (((v = RADIO_MIN_FREQ)  (v = RADIO_MAX_FREQ)) ||
-   ((v = TV_MIN_FREQ)  (v = TV_MAX_FREQ)));
-}
 
 static int ctrl_freq_max_get(struct pvr2_ctrl *cptr, int *vp)
 {
-   /* Actual maximum depends on radio/tv mode */
-   if (cptr-hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
-   *vp = RADIO_MAX_FREQ;
-   } else {
+   unsigned long fv;
+   struct pvr2_hdw *hdw = cptr-hdw;
+   if (hdw-tuner_signal_stale) {
+   pvr2_i2c_core_status_poll(hdw);
+   }
+   fv = hdw-tuner_signal_info.rangehigh;
+   if (!fv) {
+   /* Safety fallback */
*vp = TV_MAX_FREQ;
+   return 0;
}
+   if (hdw-tuner_signal_info.capability  V4L2_TUNER_CAP_LOW) {
+   fv = (fv * 125) / 2;
+   } else {
+   fv = fv * 62500;
+   }
+   *vp = fv;
return 0;
 }
 
 static int ctrl_freq_min_get(struct pvr2_ctrl *cptr, int *vp)
 {
-   /* Actual minimum depends on radio/tv mode */
-   if (cptr-hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
-   *vp = RADIO_MIN_FREQ;
-   } else {
+   unsigned long fv;
+   struct pvr2_hdw *hdw = cptr-hdw;
+   if (hdw-tuner_signal_stale) {
+   pvr2_i2c_core_status_poll(hdw);
+   }
+   fv = hdw-tuner_signal_info.rangelow;
+   if (!fv) {
+   /* Safety fallback */
*vp = TV_MIN_FREQ;
+   return 0;
}
+   if (hdw-tuner_signal_info.capability  V4L2_TUNER_CAP_LOW) {
+   fv = (fv * 125) / 2;
+   } else {
+   fv = fv * 62500;
+   }
+   *vp = fv;
return 0;
 }
 
@@ -630,9 +642,7 @@ static int ctrl_audio_modes_present_get(struct pvr2_ctrl 
*cptr,int *vp)
int val = 0;
unsigned int subchan;
struct pvr2_hdw *hdw = cptr-hdw;
-   if (hdw-tuner_signal_stale) {
-   pvr2_i2c_core_status_poll(hdw);
-   }
+   pvr2_i2c_core_status_poll(hdw);
subchan = hdw-tuner_signal_info.rxsubchans;
if (subchan  V4L2_TUNER_SUB_MONO) {
val |= (1  V4L2_TUNER_MODE_MONO);
@@ -870,10 +880,9 @@ static const struct pvr2_ctl_info control_defs[] = {
.get_value = ctrl_freq_get,
.is_dirty = ctrl_freq_is_dirty,
.clear_dirty = ctrl_freq_clear_dirty,
-   DEFINT(TV_MIN_FREQ,TV_MAX_FREQ),
+   DEFINT(0,0),
/* Hook in check for input value (tv/radio) and adjust
   max/min values accordingly */
-   .check_value = ctrl_freq_check,
.get_max_value = ctrl_freq_max_get,
.get_min_value = ctrl_freq_min_get,
},{
@@ -887,10 +896,9 @@ static const struct pvr2_ctl_info control_defs[] = {
.name = freq_table_value,
.set_value = ctrl_channelfreq_set,
.get_value = ctrl_channelfreq_get,
-   DEFINT(TV_MIN_FREQ,TV_MAX_FREQ),
+   DEFINT(0,0),
/* Hook in check for input value (tv/radio) and adjust
   max/min values accordingly */
-   .check_value = ctrl_freq_check,
.get_max_value = ctrl_freq_max_get,
.get_min_value = 

V4L/DVB (5085): Pvrusb2: trace print added

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8433544ea9ebc4227bb5aaaf361b0a1879964f7d
Commit: 8433544ea9ebc4227bb5aaaf361b0a1879964f7d
Parent: 644afdb9cc05107f3090817b6d00e90daa9a034b
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:22:28 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:39 2007 -0200

V4L/DVB (5085): Pvrusb2: trace print added

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-i2c-core.c |6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c 
b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
index 35a0665..540233e 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-i2c-core.c
@@ -605,6 +605,12 @@ void pvr2_i2c_core_status_poll(struct pvr2_hdw *hdw)
cp-status_poll(cp);
}
hdw-tuner_signal_stale = 0;
+   pvr2_trace(PVR2_TRACE_CHIPS,i2c status poll
+   type=%u strength=%u audio=0x%x cap=0x%x
+   low=%u hi=%u,
+  vtp-type,
+  vtp-signal,vtp-rxsubchans,vtp-capability,
+  vtp-rangelow,vtp-rangehigh);
} while (0); mutex_unlock(hdw-i2c_list_lock);
 }
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5083): Pvrusb2: Remove automodeswitch control

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7c74e57e6fb2ce986134e74634aeb78b3ea41a97
Commit: 7c74e57e6fb2ce986134e74634aeb78b3ea41a97
Parent: fe23a2809d1f7f7df7da38652826933b8ce6
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:15:41 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:38 2007 -0200

V4L/DVB (5083): Pvrusb2: Remove automodeswitch control

The automodeswitch control was a feature that enable automatic radio /
tv switching based on the selected frequency.  However since frequency
ranges can overlap and also since apparently in some cases it's
possible for the same frequency range to be both tv and radio in a
specific region, then this feature can't safely work.  So it's removed.

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h |1 -
 drivers/media/video/pvrusb2/pvrusb2-hdw.c  |   66 +--
 2 files changed, 4 insertions(+), 63 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h 
b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
index bc911ff..16bd741 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw-internal.h
@@ -318,7 +318,6 @@ struct pvr2_hdw {
VCREATE_DATA(res_hor);
VCREATE_DATA(res_ver);
VCREATE_DATA(srate);
-   VCREATE_DATA(automodeswitch);
 #undef VCREATE_DATA
 
struct pvr2_ctld_info *mpeg_ctrl_info;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 7761254..11890a0 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -94,7 +94,6 @@ static int procreload = 0;
 static int tuner[PVR_NUM] = { [0 ... PVR_NUM-1] = -1 };
 static int tolerance[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 };
 static int video_std[PVR_NUM] = { [0 ... PVR_NUM-1] = 0 };
-static int auto_mode_switch[PVR_NUM];
 static int init_pause_msec = 0;
 
 module_param(ctlchg, int, S_IRUGO|S_IWUSR);
@@ -112,8 +111,6 @@ module_param_array(video_std,int, NULL, 0444);
 MODULE_PARM_DESC(video_std,specify initial video standard);
 module_param_array(tolerance,int, NULL, 0444);
 MODULE_PARM_DESC(tolerance,specify stream error tolerance);
-module_param_array(auto_mode_switch,int, NULL, 0444);
-MODULE_PARM_DESC(auto_mode_switch,Enable TV/Radio automatic mode switch based 
on freq);
 
 #define PVR2_CTL_WRITE_ENDPOINT  0x01
 #define PVR2_CTL_READ_ENDPOINT   0x81
@@ -759,7 +756,6 @@ VCREATE_FUNCS(audiomode)
 VCREATE_FUNCS(res_hor)
 VCREATE_FUNCS(res_ver)
 VCREATE_FUNCS(srate)
-VCREATE_FUNCS(automodeswitch)
 
 /* Table definition of all controls which can be manipulated */
 static const struct pvr2_ctl_info control_defs[] = {
@@ -859,12 +855,6 @@ static const struct pvr2_ctl_info control_defs[] = {
.get_max_value = ctrl_vres_max_get,
.get_min_value = ctrl_vres_min_get,
},{
-   .desc = Automatic TV / Radio mode switch based on frequency,
-   .name = auto_mode_switch,
-   .default_value = 0,
-   DEFREF(automodeswitch),
-   DEFBOOL,
-   },{
.v4l_id = V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ,
.default_value = V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000,
.desc = Audio Sampling Frequency,
@@ -1022,71 +1012,28 @@ unsigned long pvr2_hdw_get_cur_freq(struct pvr2_hdw 
*hdw)
driver-core side effects of this action. */
 void pvr2_hdw_set_cur_freq(struct pvr2_hdw *hdw,unsigned long val)
 {
-   int mode = 0;
-
-   /* If hdw-automodeswitch_val is set, then we do something clever:
-  Look at the desired frequency and see if it looks like FM or TV.
-  Execute a possible mode switch based on this result.  Otherwise
-  we use the current input setting to determine which frequency
-  register we need to adjust. */
-   if (hdw-automodeswitch_val) {
-   /* Note that since FM RADIO frequency range sits *inside*
-  the TV spectrum that we must therefore check the radio
-  range first... */
-   if ((val = RADIO_MIN_FREQ)  (val = RADIO_MAX_FREQ)) {
-   mode = 1;
-   } else if ((val = TV_MIN_FREQ)  (val = TV_MAX_FREQ)) {
-   mode = 2;
-   }
-   } else {
-   if (hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
-   mode = 1;
-   } else {
-   mode = 2;
-   }
-   }
-
-   switch (mode) {
-   case 1:
+   if (hdw-input_val == PVR2_CVAL_INPUT_RADIO) {
if (hdw-freqSelector) {
/* Swing over to radio frequency selection */
  

V4L/DVB (5090): Pvrusb2: A patch to use ARRAY_SIZE macro when appropriate

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=eca8ebfc11d1935a7dd4c59cb8defb5bdff44ecd
Commit: eca8ebfc11d1935a7dd4c59cb8defb5bdff44ecd
Parent: c1c2680d922cd36338cf3efaf4ce0067c3e26eb1
Author: Ahmed S. Darwish [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:35:03 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:40 2007 -0200

V4L/DVB (5090): Pvrusb2: A patch to use ARRAY_SIZE macro when appropriate

Signed-off-by: Ahmed S. Darwish [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-encoder.c   |   19 +++--
 drivers/media/video/pvrusb2/pvrusb2-hdw.c   |   22 +++
 drivers/media/video/pvrusb2/pvrusb2-i2c-core.c  |3 +-
 drivers/media/video/pvrusb2/pvrusb2-std.c   |   25 --
 drivers/media/video/pvrusb2/pvrusb2-sysfs.c |2 +-
 drivers/media/video/pvrusb2/pvrusb2-video-v4l.c |9 ++-
 drivers/media/video/pvrusb2/pvrusb2-wm8775.c|9 ++-
 7 files changed, 33 insertions(+), 56 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-encoder.c 
b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
index 3ec8093..f2ac123 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-encoder.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-encoder.c
@@ -169,25 +169,23 @@ static int pvr2_encoder_cmd(void *ctxt,
 
*/
 
-   if (arg_cnt_send  (sizeof(wrData)/sizeof(wrData[0]))-4) {
+   if (arg_cnt_send  (ARRAY_SIZE(wrData) - 4)) {
pvr2_trace(
PVR2_TRACE_ERROR_LEGS,
Failed to write cx23416 command
 - too many input arguments
 (was given %u limit %u),
-   arg_cnt_send,
-   (unsigned int)(sizeof(wrData)/sizeof(wrData[0])) - 4);
+   arg_cnt_send, ARRAY_SIZE(wrData) - 4);
return -EINVAL;
}
 
-   if (arg_cnt_recv  (sizeof(rdData)/sizeof(rdData[0]))-4) {
+   if (arg_cnt_recv  (ARRAY_SIZE(rdData) - 4)) {
pvr2_trace(
PVR2_TRACE_ERROR_LEGS,
Failed to write cx23416 command
 - too many return arguments
 (was given %u limit %u),
-   arg_cnt_recv,
-   (unsigned int)(sizeof(rdData)/sizeof(rdData[0])) - 4);
+   arg_cnt_recv, ARRAY_SIZE(rdData) - 4);
return -EINVAL;
}
 
@@ -201,7 +199,7 @@ static int pvr2_encoder_cmd(void *ctxt,
for (idx = 0; idx  arg_cnt_send; idx++) {
wrData[idx+4] = argp[idx];
}
-   for (; idx  (sizeof(wrData)/sizeof(wrData[0]))-4; idx++) {
+   for (; idx  ARRAY_SIZE(wrData) - 4; idx++) {
wrData[idx+4] = 0;
}
 
@@ -245,8 +243,7 @@ static int pvr2_encoder_cmd(void *ctxt,
if (ret) break;
wrData[0] = 0x7;
ret = pvr2_encoder_read_words(
-   hdw,0,rdData,
-   sizeof(rdData)/sizeof(rdData[0]));
+   hdw,0,rdData, ARRAY_SIZE(rdData));
if (ret) break;
for (idx = 0; idx  arg_cnt_recv; idx++) {
argp[idx] = rdData[idx+4];
@@ -269,13 +266,13 @@ static int pvr2_encoder_vcmd(struct pvr2_hdw *hdw, int 
cmd,
unsigned int idx;
u32 data[12];
 
-   if (args  sizeof(data)/sizeof(data[0])) {
+   if (args  ARRAY_SIZE(data)) {
pvr2_trace(
PVR2_TRACE_ERROR_LEGS,
Failed to write cx23416 command
 - too many arguments
 (was given %u limit %u),
-   args,(unsigned int)(sizeof(data)/sizeof(data[0])));
+   args, ARRAY_SIZE(data));
return -EINVAL;
}
 
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 819564c..1c79ce1 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -74,12 +74,10 @@ static const char *pvr2_client_29xxx[] = {
 
 static struct pvr2_string_table pvr2_client_lists[] = {
[PVR2_HDW_TYPE_29XXX] = {
-   pvr2_client_29xxx,
-   sizeof(pvr2_client_29xxx)/sizeof(pvr2_client_29xxx[0]),
+   pvr2_client_29xxx, ARRAY_SIZE(pvr2_client_29xxx)
},
[PVR2_HDW_TYPE_24XXX] = {
-   pvr2_client_24xxx,
-   sizeof(pvr2_client_24xxx)/sizeof(pvr2_client_24xxx[0]),
+   pvr2_client_24xxx, ARRAY_SIZE(pvr2_client_24xxx)
},
 };
 
@@ -212,7 +210,7 @@ static const struct pvr2_mpeg_ids 

V4L/DVB (5091): Pvrusb2: Use kzalloc in place of kmalloc/memset pairs

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ca545f7c39476c6c4c6e639452180a2b38342669
Commit: ca545f7c39476c6c4c6e639452180a2b38342669
Parent: eca8ebfc11d1935a7dd4c59cb8defb5bdff44ecd
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:37:11 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:41 2007 -0200

V4L/DVB (5091): Pvrusb2: Use kzalloc in place of kmalloc/memset pairs

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-audio.c   |3 +--
 drivers/media/video/pvrusb2/pvrusb2-context.c |3 +--
 drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c |3 +--
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |   14 --
 drivers/media/video/pvrusb2/pvrusb2-i2c-core.c|3 +--
 drivers/media/video/pvrusb2/pvrusb2-io.c  |3 +--
 drivers/media/video/pvrusb2/pvrusb2-ioread.c  |3 +--
 drivers/media/video/pvrusb2/pvrusb2-std.c |3 +--
 drivers/media/video/pvrusb2/pvrusb2-sysfs.c   |   15 +--
 drivers/media/video/pvrusb2/pvrusb2-tuner.c   |3 +--
 drivers/media/video/pvrusb2/pvrusb2-video-v4l.c   |3 +--
 drivers/media/video/pvrusb2/pvrusb2-wm8775.c  |3 +--
 12 files changed, 19 insertions(+), 40 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-audio.c 
b/drivers/media/video/pvrusb2/pvrusb2-audio.c
index 5d30c93..7e61d4a 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-audio.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-audio.c
@@ -152,9 +152,8 @@ int pvr2_i2c_msp3400_setup(struct pvr2_hdw *hdw,struct 
pvr2_i2c_client *cp)
struct pvr2_msp3400_handler *ctxt;
if (cp-handler) return 0;
 
-   ctxt = kmalloc(sizeof(*ctxt),GFP_KERNEL);
+   ctxt = kzalloc(sizeof(*ctxt),GFP_KERNEL);
if (!ctxt) return 0;
-   memset(ctxt,0,sizeof(*ctxt));
 
ctxt-i2c_handler.func_data = ctxt;
ctxt-i2c_handler.func_table = msp3400_funcs;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-context.c 
b/drivers/media/video/pvrusb2/pvrusb2-context.c
index cf12974..6bbed88 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-context.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-context.c
@@ -83,9 +83,8 @@ struct pvr2_context *pvr2_context_create(
void (*setup_func)(struct pvr2_context *))
 {
struct pvr2_context *mp = NULL;
-   mp = kmalloc(sizeof(*mp),GFP_KERNEL);
+   mp = kzalloc(sizeof(*mp),GFP_KERNEL);
if (!mp) goto done;
-   memset(mp,0,sizeof(*mp));
pvr2_trace(PVR2_TRACE_STRUCT,Creating pvr_main id=%p,mp);
mp-setup_func = setup_func;
mutex_init(mp-mutex);
diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c 
b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
index a3357bf..851099a 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -231,9 +231,8 @@ int pvr2_i2c_cx2584x_v4l_setup(struct pvr2_hdw *hdw,
if (cp-handler) return 0;
if (!decoder_detect(cp)) return 0;
 
-   ctxt = kmalloc(sizeof(*ctxt),GFP_KERNEL);
+   ctxt = kzalloc(sizeof(*ctxt),GFP_KERNEL);
if (!ctxt) return 0;
-   memset(ctxt,0,sizeof(*ctxt));
 
ctxt-handler.func_data = ctxt;
ctxt-handler.func_table = hfuncs;
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c 
b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 1c79ce1..7f91685 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1934,20 +1934,18 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface 
*intf,
return NULL;
}
 
-   hdw = kmalloc(sizeof(*hdw),GFP_KERNEL);
+   hdw = kzalloc(sizeof(*hdw),GFP_KERNEL);
pvr2_trace(PVR2_TRACE_INIT,pvr2_hdw_create: hdw=%p, type \%s\,
   hdw,pvr2_device_names[hdw_type]);
if (!hdw) goto fail;
-   memset(hdw,0,sizeof(*hdw));
hdw-tuner_signal_stale = !0;
cx2341x_fill_defaults(hdw-enc_ctl_state);
 
hdw-control_cnt = CTRLDEF_COUNT;
hdw-control_cnt += MPEGDEF_COUNT;
-   hdw-controls = kmalloc(sizeof(struct pvr2_ctrl) * hdw-control_cnt,
+   hdw-controls = kzalloc(sizeof(struct pvr2_ctrl) * hdw-control_cnt,
GFP_KERNEL);
if (!hdw-controls) goto fail;
-   memset(hdw-controls,0,sizeof(struct pvr2_ctrl) * hdw-control_cnt);
hdw-hdw_type = hdw_type;
for (idx = 0; idx  hdw-control_cnt; idx++) {
cptr = hdw-controls + idx;
@@ -1961,11 +1959,9 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface 
*intf,
cptr-info = control_defs+idx;
}
/* Define and configure additional controls from cx2341x module. */
-   hdw-mpeg_ctrl_info = kmalloc(
+   hdw-mpeg_ctrl_info = kzalloc(
   

V4L/DVB (5092): Pvrusb2: Use ARRAY_SIZE wherever possible

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=27c7b710a4010e10b14500c0b27bb4c2a806de1b
Commit: 27c7b710a4010e10b14500c0b27bb4c2a806de1b
Parent: ca545f7c39476c6c4c6e639452180a2b38342669
Author: Mike Isely [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 00:39:17 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:41 2007 -0200

V4L/DVB (5092): Pvrusb2: Use ARRAY_SIZE wherever possible

Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-audio.c   |9 +++--
 drivers/media/video/pvrusb2/pvrusb2-ctrl.c|5 ++---
 drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c |9 +++--
 drivers/media/video/pvrusb2/pvrusb2-debugifc.c|4 ++--
 drivers/media/video/pvrusb2/pvrusb2-eeprom.c  |5 ++---
 drivers/media/video/pvrusb2/pvrusb2-hdw.c |2 +-
 6 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-audio.c 
b/drivers/media/video/pvrusb2/pvrusb2-audio.c
index 7e61d4a..a45ede0 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-audio.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-audio.c
@@ -98,8 +98,7 @@ static int msp3400_check(struct pvr2_msp3400_handler *ctxt)
unsigned long msk;
unsigned int idx;
 
-   for (idx = 0; idx  sizeof(msp3400_ops)/sizeof(msp3400_ops[0]);
-idx++) {
+   for (idx = 0; idx  ARRAY_SIZE(msp3400_ops); idx++) {
msk = 1  idx;
if (ctxt-stale_mask  msk) continue;
if (msp3400_ops[idx].check(ctxt)) {
@@ -115,8 +114,7 @@ static void msp3400_update(struct pvr2_msp3400_handler 
*ctxt)
unsigned long msk;
unsigned int idx;
 
-   for (idx = 0; idx  sizeof(msp3400_ops)/sizeof(msp3400_ops[0]);
-idx++) {
+   for (idx = 0; idx  ARRAY_SIZE(msp3400_ops); idx++) {
msk = 1  idx;
if (!(ctxt-stale_mask  msk)) continue;
ctxt-stale_mask = ~msk;
@@ -159,8 +157,7 @@ int pvr2_i2c_msp3400_setup(struct pvr2_hdw *hdw,struct 
pvr2_i2c_client *cp)
ctxt-i2c_handler.func_table = msp3400_funcs;
ctxt-client = cp;
ctxt-hdw = hdw;
-   ctxt-stale_mask = (1  (sizeof(msp3400_ops)/
- sizeof(msp3400_ops[0]))) - 1;
+   ctxt-stale_mask = (1  ARRAY_SIZE(msp3400_ops)) - 1;
cp-handler = ctxt-i2c_handler;
pvr2_trace(PVR2_TRACE_CHIPS,i2c 0x%x msp3400 V4L2 handler set up,
   cp-client-addr);
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c 
b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
index f8f4e2f..f569b00 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c
@@ -515,9 +515,8 @@ int pvr2_ctrl_sym_to_value(struct pvr2_ctrl *cptr,
}
if (maskptr) *maskptr = ~0;
} else if (cptr-info-type == pvr2_ctl_bool) {
-   ret = parse_token(
-   ptr,len,valptr,boolNames,
-   sizeof(boolNames)/sizeof(boolNames[0]));
+   ret = parse_token(ptr,len,valptr,boolNames,
+ ARRAY_SIZE(boolNames));
if (ret == 1) {
*valptr = *valptr ? !0 : 0;
} else if (ret == 0) {
diff --git a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c 
b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
index 851099a..e8a9252 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c
@@ -150,8 +150,7 @@ static int decoder_check(struct pvr2_v4l_cx2584x *ctxt)
unsigned long msk;
unsigned int idx;
 
-   for (idx = 0; idx  sizeof(decoder_ops)/sizeof(decoder_ops[0]);
-idx++) {
+   for (idx = 0; idx  ARRAY_SIZE(decoder_ops); idx++) {
msk = 1  idx;
if (ctxt-stale_mask  msk) continue;
if (decoder_ops[idx].check(ctxt)) {
@@ -167,8 +166,7 @@ static void decoder_update(struct pvr2_v4l_cx2584x *ctxt)
unsigned long msk;
unsigned int idx;
 
-   for (idx = 0; idx  sizeof(decoder_ops)/sizeof(decoder_ops[0]);
-idx++) {
+   for (idx = 0; idx  ARRAY_SIZE(decoder_ops); idx++) {
msk = 1  idx;
if (!(ctxt-stale_mask  msk)) continue;
ctxt-stale_mask = ~msk;
@@ -242,8 +240,7 @@ int pvr2_i2c_cx2584x_v4l_setup(struct pvr2_hdw *hdw,
ctxt-ctrl.force_reset = (void (*)(void*))decoder_reset;
ctxt-client = cp;
ctxt-hdw = hdw;
-   ctxt-stale_mask = (1  (sizeof(decoder_ops)/
- sizeof(decoder_ops[0]))) - 1;
+   ctxt-stale_mask = (1  ARRAY_SIZE(decoder_ops)) - 1;

V4L/DVB (5094): Pvrusb2: Introduce fake audio input selection

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=848ed3ca2a4eb85d6c6bde2a1b254b1f4c658e02
Commit: 848ed3ca2a4eb85d6c6bde2a1b254b1f4c658e02
Parent: 606cf9caeb3b908426757924bfdce85cb854aa81
Author: Pantelis Koukousoulas [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 01:57:36 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:42 2007 -0200

V4L/DVB (5094): Pvrusb2: Introduce fake audio input selection

This should allow mplayer pvr:// to start. The trick is that no matter
what actual input we use under this fake one, it will be able to do
stereo :-)

Signed-off-by: Pantelis Koukousoulas [EMAIL PROTECTED]
Signed-off-by: Mike Isely [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/pvrusb2/pvrusb2-v4l2.c |   28 +++-
 1 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
index 91c4225..a728ca2 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-v4l2.c
@@ -321,13 +321,39 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct 
file *file,
 
case VIDIOC_ENUMAUDIO:
{
+   /* pkt: FIXME: We are returning one fake input here
+  which could very well be called whatever_we_like.
+  This is for apps that want to see an audio input
+  just to feel comfortable, as well as to test if
+  it can do stereo or sth. There is actually no guarantee
+  that the actual audio input cannot change behind the app's
+  back, but most applications should not mind that either.
+
+  Hopefully, mplayer people will work with us on this (this
+  whole mess is to support mplayer pvr://), or Hans will come
+  up with a more standard way to say we have inputs but we
+  don 't want you to change them independent of video which
+  will sort this mess.
+*/
+   struct v4l2_audio *vin = arg;
ret = -EINVAL;
+   if (vin-index  0) break;
+   strncpy(vin-name, PVRUSB2 Audio,14);
+   vin-capability = V4L2_AUDCAP_STEREO;
+   ret = 0;
+   break;
break;
}
 
case VIDIOC_G_AUDIO:
{
-   ret = -EINVAL;
+   /* pkt: FIXME: see above comment (VIDIOC_ENUMAUDIO) */
+   struct v4l2_audio *vin = arg;
+   memset(vin,0,sizeof(*vin));
+   vin-index = 0;
+   strncpy(vin-name, PVRUSB2 Audio,14);
+   vin-capability = V4L2_AUDCAP_STEREO;
+   ret = 0;
break;
}
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5097): Convert cx8800 driver to video_ioctl2 handler

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8d87cb9f31930c7ac25d03043fa90cbd5313fe26
Commit: 8d87cb9f31930c7ac25d03043fa90cbd5313fe26
Parent: fd69496461050296fb0fdd9acf6d789d27a0ef44
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:58:17 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:42 2007 -0200

V4L/DVB (5097): Convert cx8800 driver to video_ioctl2 handler

video_ioctl2 handler provides V4L2 API parsing.
Using it makes the driver simpler, and isolates API parsing.
This allows future reusage of driver controls using other ways, like sysfs
and/or procfs and increases isolation of driver-specific handling from the
generic common ioctl processing.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-core.c  |   55 ++-
 drivers/media/video/cx88/cx88-vbi.c   |7 +-
 drivers/media/video/cx88/cx88-video.c | 1072 ++---
 drivers/media/video/cx88/cx88.h   |   20 +-
 4 files changed, 521 insertions(+), 633 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-core.c 
b/drivers/media/video/cx88/cx88-core.c
index 1899736..278d2df 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -5,6 +5,11 @@
  *
  * (c) 2003 Gerd Knorr [EMAIL PROTECTED] [SuSE Labs]
  *
+ * (c) 2005-2006 Mauro Carvalho Chehab [EMAIL PROTECTED]
+ * - Multituner support
+ * - video_ioctl2 conversion
+ * - PAL/M fixes
+ *
  *  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
@@ -631,22 +636,22 @@ int cx88_reset(struct cx88_core *core)
 
 /* -- */
 
-static unsigned int inline norm_swidth(struct cx88_tvnorm *norm)
+static unsigned int inline norm_swidth(struct v4l2_tvnorm *norm)
 {
return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 754 : 922;
 }
 
-static unsigned int inline norm_hdelay(struct cx88_tvnorm *norm)
+static unsigned int inline norm_hdelay(struct v4l2_tvnorm *norm)
 {
return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 135 : 186;
 }
 
-static unsigned int inline norm_vdelay(struct cx88_tvnorm *norm)
+static unsigned int inline norm_vdelay(struct v4l2_tvnorm *norm)
 {
return (norm-id  V4L2_STD_625_50) ? 0x24 : 0x18;
 }
 
-static unsigned int inline norm_fsc8(struct cx88_tvnorm *norm)
+static unsigned int inline norm_fsc8(struct v4l2_tvnorm *norm)
 {
if (norm-id  V4L2_STD_PAL_M)
return 28604892;  // 3.575611 MHz
@@ -666,7 +671,7 @@ static unsigned int inline norm_fsc8(struct cx88_tvnorm 
*norm)
return 35468950;  // 4.43361875 MHz +/- 5 Hz
 }
 
-static unsigned int inline norm_htotal(struct cx88_tvnorm *norm)
+static unsigned int inline norm_htotal(struct v4l2_tvnorm *norm)
 {
 
unsigned int fsc4=norm_fsc8(norm)/2;
@@ -677,7 +682,7 @@ static unsigned int inline norm_htotal(struct cx88_tvnorm 
*norm)
((fsc4+262)/525*1001+15000)/3;
 }
 
-static unsigned int inline norm_vbipack(struct cx88_tvnorm *norm)
+static unsigned int inline norm_vbipack(struct v4l2_tvnorm *norm)
 {
return (norm-id  V4L2_STD_625_50) ? 511 : 400;
 }
@@ -826,7 +831,7 @@ int cx88_stop_audio_dma(struct cx88_core *core)
 
 static int set_tvaudio(struct cx88_core *core)
 {
-   struct cx88_tvnorm *norm = core-tvnorm;
+   struct v4l2_tvnorm *norm = core-tvnorm;
 
if (CX88_VMUX_TELEVISION != INPUT(core-input)-type)
return 0;
@@ -874,7 +879,7 @@ static int set_tvaudio(struct cx88_core *core)
 
 
 
-int cx88_set_tvnorm(struct cx88_core *core, struct cx88_tvnorm *norm)
+int cx88_set_tvnorm(struct cx88_core *core, struct v4l2_tvnorm *norm)
 {
u32 fsc8;
u32 adc_clock;
@@ -882,6 +887,7 @@ int cx88_set_tvnorm(struct cx88_core *core, struct 
cx88_tvnorm *norm)
u32 step_db,step_dr;
u64 tmp64;
u32 bdelay,agcdelay,htotal;
+   u32 cxiformat, cxoformat;
 
core-tvnorm = norm;
fsc8   = norm_fsc8(norm);
@@ -890,9 +896,32 @@ int cx88_set_tvnorm(struct cx88_core *core, struct 
cx88_tvnorm *norm)
step_db= fsc8;
step_dr= fsc8;
 
-   if (norm-id  V4L2_STD_SECAM) {
+   if (norm-id  V4L2_STD_NTSC_M_JP) {
+   cxiformat = VideoFormatNTSCJapan;
+   cxoformat = 0x181f0008;
+   } else if (norm-id  V4L2_STD_PAL_M) {
+   cxiformat = VideoFormatPALM;
+   cxoformat = 0x1c1f0008;
+   } else if (norm-id  V4L2_STD_PAL_N) {
+   cxiformat = VideoFormatPALN;
+   cxoformat = 0x1c1f0008;
+   } else if (norm-id  V4L2_STD_PAL_Nc) {
+   cxiformat = VideoFormatPALNC;
+ 

V4L/DVB (5098): Added support for V4L2_STD_NTSC_443

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1427f6b6b96e573c0c8eb905dca9032f442a44cf
Commit: 1427f6b6b96e573c0c8eb905dca9032f442a44cf
Parent: 8d87cb9f31930c7ac25d03043fa90cbd5313fe26
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:58:20 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:43 2007 -0200

V4L/DVB (5098): Added support for V4L2_STD_NTSC_443

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-core.c |8 ++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-core.c 
b/drivers/media/video/cx88/cx88-core.c
index 278d2df..a51a3b7 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -899,6 +899,9 @@ int cx88_set_tvnorm(struct cx88_core *core, struct 
v4l2_tvnorm *norm)
if (norm-id  V4L2_STD_NTSC_M_JP) {
cxiformat = VideoFormatNTSCJapan;
cxoformat = 0x181f0008;
+   } else if (norm-id  V4L2_STD_NTSC_443) {
+   cxiformat = VideoFormatNTSC443;
+   cxoformat = 0x181f0008;
} else if (norm-id  V4L2_STD_PAL_M) {
cxiformat = VideoFormatPALM;
cxoformat = 0x1c1f0008;
@@ -915,10 +918,11 @@ int cx88_set_tvnorm(struct cx88_core *core, struct 
v4l2_tvnorm *norm)
cxiformat = VideoFormatNTSC;
cxoformat = 0x181f0008;
} else if (norm-id  V4L2_STD_SECAM) {
-   cxiformat = VideoFormatSECAM;
-   cxoformat = 0x181f0008;
step_db = 425 * 8;
step_dr = 4406250 * 8;
+
+   cxiformat = VideoFormatSECAM;
+   cxoformat = 0x181f0008;
} else { /* PAL */
cxiformat = VideoFormatPAL;
cxoformat = 0x181f0008;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5102): make videodev to auto-generate standards

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=63ab1bdc3b98b804f69bd345b1e3a491804c12de
Commit: 63ab1bdc3b98b804f69bd345b1e3a491804c12de
Parent: e90311a198e21902cda4fd4cac8e09bc6ce52603
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:58:33 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:44 2007 -0200

V4L/DVB (5102): make videodev to auto-generate standards

v4l2_tvnorm were meant to describe video standards and its names to V4L2 
API.
However, this were doing by some static structures at the driver.

This patch changes the internals in a way that, at the driver, only a
v4l2_tvnorm (a 64 bit integer) should be filled, with all supported
tvnorms. videodev will dynamically generate the proper API array
based on supported standards.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-core.c  |   75 +
 drivers/media/video/cx88/cx88-vbi.c   |4 +-
 drivers/media/video/cx88/cx88-video.c |   71 --
 drivers/media/video/cx88/cx88.h   |   21 ++
 4 files changed, 63 insertions(+), 108 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-core.c 
b/drivers/media/video/cx88/cx88-core.c
index a51a3b7..d86813b 100644
--- a/drivers/media/video/cx88/cx88-core.c
+++ b/drivers/media/video/cx88/cx88-core.c
@@ -636,30 +636,30 @@ int cx88_reset(struct cx88_core *core)
 
 /* -- */
 
-static unsigned int inline norm_swidth(struct v4l2_tvnorm *norm)
+static unsigned int inline norm_swidth(v4l2_std_id norm)
 {
-   return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 754 : 922;
+   return (norm  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 754 : 922;
 }
 
-static unsigned int inline norm_hdelay(struct v4l2_tvnorm *norm)
+static unsigned int inline norm_hdelay(v4l2_std_id norm)
 {
-   return (norm-id  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 135 : 186;
+   return (norm  (V4L2_STD_MN  ~V4L2_STD_PAL_Nc)) ? 135 : 186;
 }
 
-static unsigned int inline norm_vdelay(struct v4l2_tvnorm *norm)
+static unsigned int inline norm_vdelay(v4l2_std_id norm)
 {
-   return (norm-id  V4L2_STD_625_50) ? 0x24 : 0x18;
+   return (norm  V4L2_STD_625_50) ? 0x24 : 0x18;
 }
 
-static unsigned int inline norm_fsc8(struct v4l2_tvnorm *norm)
+static unsigned int inline norm_fsc8(v4l2_std_id norm)
 {
-   if (norm-id  V4L2_STD_PAL_M)
+   if (norm  V4L2_STD_PAL_M)
return 28604892;  // 3.575611 MHz
 
-   if (norm-id  (V4L2_STD_PAL_Nc))
+   if (norm  (V4L2_STD_PAL_Nc))
return 28656448;  // 3.582056 MHz
 
-   if (norm-id  V4L2_STD_NTSC) // All NTSC/M and variants
+   if (norm  V4L2_STD_NTSC) // All NTSC/M and variants
return 28636360;  // 3.57954545 MHz +/- 10 Hz
 
/* SECAM have also different sub carrier for chroma,
@@ -671,20 +671,20 @@ static unsigned int inline norm_fsc8(struct v4l2_tvnorm 
*norm)
return 35468950;  // 4.43361875 MHz +/- 5 Hz
 }
 
-static unsigned int inline norm_htotal(struct v4l2_tvnorm *norm)
+static unsigned int inline norm_htotal(v4l2_std_id norm)
 {
 
unsigned int fsc4=norm_fsc8(norm)/2;
 
/* returns 4*FSC / vtotal / frames per seconds */
-   return (norm-id  V4L2_STD_625_50) ?
+   return (norm  V4L2_STD_625_50) ?
((fsc4+312)/625+12)/25 :
((fsc4+262)/525*1001+15000)/3;
 }
 
-static unsigned int inline norm_vbipack(struct v4l2_tvnorm *norm)
+static unsigned int inline norm_vbipack(v4l2_std_id norm)
 {
-   return (norm-id  V4L2_STD_625_50) ? 511 : 400;
+   return (norm  V4L2_STD_625_50) ? 511 : 400;
 }
 
 int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int 
height,
@@ -697,7 +697,7 @@ int cx88_set_scale(struct cx88_core *core, unsigned int 
width, unsigned int heig
dprintk(1,set_scale: %dx%d [%s%s,%s]\n, width, height,
V4L2_FIELD_HAS_TOP(field)? T : ,
V4L2_FIELD_HAS_BOTTOM(field) ? B : ,
-   core-tvnorm-name);
+   v4l2_norm_to_name(core-tvnorm));
if (!V4L2_FIELD_HAS_BOTH(field))
height *= 2;
 
@@ -734,7 +734,7 @@ int cx88_set_scale(struct cx88_core *core, unsigned int 
width, unsigned int heig
// setup filters
value = 0;
value |= (1  19);// CFILT (default)
-   if (core-tvnorm-id  V4L2_STD_SECAM) {
+   if (core-tvnorm  V4L2_STD_SECAM) {
value |= (1  15);
value |= (1  16);
}
@@ -831,36 +831,36 @@ int cx88_stop_audio_dma(struct cx88_core *core)
 
 static int set_tvaudio(struct cx88_core *core)
 {
-   struct v4l2_tvnorm *norm = core-tvnorm;
+   v4l2_std_id norm = core-tvnorm;
 
if 

V4L/DVB (5103): Fix vidioc_g_tuner handling

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=243d8c0fd03c77051d0f6a634cbadb7bbe28a58a
Commit: 243d8c0fd03c77051d0f6a634cbadb7bbe28a58a
Parent: 63ab1bdc3b98b804f69bd345b1e3a491804c12de
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:58:36 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:44 2007 -0200

V4L/DVB (5103): Fix vidioc_g_tuner handling

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-video.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-video.c 
b/drivers/media/video/cx88/cx88-video.c
index 8ba9942..d388a42 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -1301,6 +1301,8 @@ static int vidioc_g_tuner (struct file *file, void *priv,
 
if (unlikely(UNSET == core-tuner_type))
return -EINVAL;
+   if (0 != t-index)
+   return -EINVAL;
 
strcpy(t-name, Television);
t-type   = V4L2_TUNER_ANALOG_TV;
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5104): Moved several stuff that were at cx88-video to cx88-blackbird.c

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ed10b06d8da204ce5f8d1b5b1a9d4df6565847c9
Commit: ed10b06d8da204ce5f8d1b5b1a9d4df6565847c9
Parent: 243d8c0fd03c77051d0f6a634cbadb7bbe28a58a
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:58:39 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:44 2007 -0200

V4L/DVB (5104): Moved several stuff that were at cx88-video to 
cx88-blackbird.c

cx88-blackbird were using some ioctl handling that were previously on
cx88-video.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-blackbird.c |  308 -
 1 files changed, 306 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-blackbird.c 
b/drivers/media/video/cx88/cx88-blackbird.c
index 9a7a299..2eb31ff 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -53,6 +53,76 @@ MODULE_PARM_DESC(debug,enable debug messages [blackbird]);
 
 /* -- */
 
+
+struct cx88_tvnorm {
+   char   *name;
+   v4l2_std_idid;
+   u32cxiformat;
+   u32cxoformat;
+};
+
+static struct cx88_tvnorm tvnorms[] = {
+   {
+   .name  = NTSC-M,
+   .id= V4L2_STD_NTSC_M,
+   .cxiformat = VideoFormatNTSC,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = NTSC-JP,
+   .id= V4L2_STD_NTSC_M_JP,
+   .cxiformat = VideoFormatNTSCJapan,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = PAL-BG,
+   .id= V4L2_STD_PAL_BG,
+   .cxiformat = VideoFormatPAL,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = PAL-DK,
+   .id= V4L2_STD_PAL_DK,
+   .cxiformat = VideoFormatPAL,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = PAL-I,
+   .id= V4L2_STD_PAL_I,
+   .cxiformat = VideoFormatPAL,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = PAL-M,
+   .id= V4L2_STD_PAL_M,
+   .cxiformat = VideoFormatPALM,
+   .cxoformat = 0x1c1f0008,
+   },{
+   .name  = PAL-N,
+   .id= V4L2_STD_PAL_N,
+   .cxiformat = VideoFormatPALN,
+   .cxoformat = 0x1c1f0008,
+   },{
+   .name  = PAL-Nc,
+   .id= V4L2_STD_PAL_Nc,
+   .cxiformat = VideoFormatPALNC,
+   .cxoformat = 0x1c1f0008,
+   },{
+   .name  = PAL-60,
+   .id= V4L2_STD_PAL_60,
+   .cxiformat = VideoFormatPAL60,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = SECAM-L,
+   .id= V4L2_STD_SECAM_L,
+   .cxiformat = VideoFormatSECAM,
+   .cxoformat = 0x181f0008,
+   },{
+   .name  = SECAM-DK,
+   .id= V4L2_STD_SECAM_DK,
+   .cxiformat = VideoFormatSECAM,
+   .cxoformat = 0x181f0008,
+   }
+};
+int cx88_do_ioctl( struct inode *inode, struct file *file,
+  int radio, struct cx88_core *core, unsigned int cmd,
+  void *arg, v4l2_kioctl driver_ioctl );
+
 #define BLACKBIRD_FIRM_IMAGE_SIZE 256*1024
 
 /* defines below are from ivtv-driver.h */
@@ -520,7 +590,7 @@ static void blackbird_codec_settings(struct cx8802_dev *dev)
 
dev-params.width = dev-width;
dev-params.height = dev-height;
-   dev-params.is_50hz = (dev-core-tvnorm-id  V4L2_STD_625_50) != 0;
+   dev-params.is_50hz = (dev-core-tvnorm  V4L2_STD_625_50) != 0;
 
cx2341x_update(dev, blackbird_mbox_func, NULL, dev-params);
 }
@@ -918,6 +988,240 @@ static int mpeg_do_ioctl(struct inode *inode, struct file 
*file,
return 0;
 }
 
+int cx88_do_ioctl(struct inode *inode, struct file *file, int radio,
+ struct cx88_core *core, unsigned int cmd, void *arg, 
v4l2_kioctl driver_ioctl)
+{
+   int err;
+
+   if (debug) {
+  if (debug  1) {
+  if (_IOC_DIR(cmd)  _IOC_WRITE)
+  v4l_printk_ioctl_arg(cx88(w),cmd, arg);
+  else if (!_IOC_DIR(cmd)  _IOC_READ) {
+  v4l_print_ioctl(cx88, cmd);
+  }
+  } else
+  v4l_print_ioctl(core-name,cmd);
+
+   }
+
+   switch (cmd) {
+   /* -- tv norms -- */
+   case VIDIOC_ENUMSTD:
+   {
+   struct v4l2_standard *e = arg;
+   unsigned 

V4L/DVB (5106): Do some cleanups at cx88-blackbird

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1571720c5ecfb9b5f27aff0678e3bef0cb1821ca
Commit: 1571720c5ecfb9b5f27aff0678e3bef0cb1821ca
Parent: 23154f2f3b8c3c7c58548c518f28195b0d0a6c64
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:59:29 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:45 2007 -0200

V4L/DVB (5106): Do some cleanups at cx88-blackbird

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-blackbird.c |   69 -
 1 files changed, 29 insertions(+), 40 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-blackbird.c 
b/drivers/media/video/cx88/cx88-blackbird.c
index 0ba6ef3..54380dd 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -956,12 +956,31 @@ static int mpeg_do_ioctl(struct inode *inode, struct file 
*file,
}
case VIDIOC_S_FREQUENCY:
{
+   struct v4l2_frequency *f = arg;
+
blackbird_api_cmd(fh-dev, CX2341X_ENC_STOP_CAPTURE, 3, 0,
  BLACKBIRD_END_NOW,
  BLACKBIRD_MPEG_CAPTURE,
  BLACKBIRD_RAW_BITS_NONE);
 
-   cx88_do_ioctl(inode, file, 0, dev-core, cmd, arg, 
cx88_ioctl_hook);
+   if (UNSET == core-tuner_type)
+   return -EINVAL;
+   if (f-tuner != 0)
+   return -EINVAL;
+   if (0 == radio  f-type != V4L2_TUNER_ANALOG_TV)
+   return -EINVAL;
+   if (1 == radio  f-type != V4L2_TUNER_RADIO)
+   return -EINVAL;
+   mutex_lock(core-lock);
+   core-freq = f-frequency;
+   cx88_newstation(core);
+   cx88_call_i2c_clients(core,VIDIOC_S_FREQUENCY,f);
+
+   /* When changing channels it is required to reset TVAUDIO */
+   msleep (10);
+   cx88_set_tvaudio(core);
+
+   mutex_unlock(core-lock);
 
blackbird_initialize_codec(dev);
cx88_set_scale(dev-core, dev-width, dev-height,
@@ -985,11 +1004,17 @@ static int mpeg_do_ioctl(struct inode *inode, struct 
file *file,
return blackbird_querymenu(dev, arg);
case VIDIOC_QUERYCTRL:
{
-   struct v4l2_queryctrl *c = arg;
+   struct v4l2_queryctrl *qctrl = arg;
 
-   if (blackbird_queryctrl(dev, c) == 0)
+   if (blackbird_queryctrl(dev, qctrl) == 0)
return 0;
-   return cx88_do_ioctl(inode, file, 0, dev-core, cmd, arg, 
mpeg_do_ioctl);
+
+   struct v4l2_queryctrl *qctrl = arg;
+
+   qctrl-id = v4l2_ctrl_next(ctrl_classes, qctrl-id);
+   if (unlikely(qctrl-id == 0))
+   return -EINVAL;
+   return cx8800_ctrl_query(qctrl);
}
 
default:
@@ -1164,42 +1189,6 @@ int cx88_do_ioctl(struct inode *inode, struct file 
*file, int radio,
return 0;
}
 
-
-   /* --- controls -- */
-   case VIDIOC_QUERYCTRL:
-   {
-   struct v4l2_queryctrl *qctrl = arg;
-
-   qctrl-id = v4l2_ctrl_next(ctrl_classes, qctrl-id);
-   if (unlikely(qctrl-id == 0))
-   return -EINVAL;
-   return cx8800_ctrl_query(qctrl);
-   }
-   /* --- tuner ioctls -- */
-   case VIDIOC_S_FREQUENCY:
-   {
-   struct v4l2_frequency *f = arg;
-
-   if (UNSET == core-tuner_type)
-   return -EINVAL;
-   if (f-tuner != 0)
-   return -EINVAL;
-   if (0 == radio  f-type != V4L2_TUNER_ANALOG_TV)
-   return -EINVAL;
-   if (1 == radio  f-type != V4L2_TUNER_RADIO)
-   return -EINVAL;
-   mutex_lock(core-lock);
-   core-freq = f-frequency;
-   cx88_newstation(core);
-   cx88_call_i2c_clients(core,VIDIOC_S_FREQUENCY,f);
-
-   /* When changing channels it is required to reset TVAUDIO */
-   msleep (10);
-   cx88_set_tvaudio(core);
-
-   mutex_unlock(core-lock);
-   return 0;
-   }
 #ifdef CONFIG_VIDEO_ADV_DEBUG
/* ioctls to allow direct acces to the cx2388x registers */
case VIDIOC_INT_G_REGISTER:
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5110): Keep the previous tvnorm default for cx88 and cx88-blackbird

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a4b662f736c7919207da113814c35cad340c67fd
Commit: a4b662f736c7919207da113814c35cad340c67fd
Parent: b3c4ee7016ad9d4c51887591b8a62c05f59cc498
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:59:41 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:46 2007 -0200

V4L/DVB (5110): Keep the previous tvnorm default for cx88 and cx88-blackbird

The video_ioctl2 conversion replaced the default from NTSC to PAL_BG.
This broke cx88-blackbird. Probably, there are some badness at this
driver, not doing all required stuff to change video standard.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-blackbird.c |2 +-
 drivers/media/video/cx88/cx88-video.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-blackbird.c 
b/drivers/media/video/cx88/cx88-blackbird.c
index 8fcef79..a1be1e2 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -1233,7 +1233,7 @@ static struct video_device cx8802_mpeg_template =
.vidioc_s_tuner   = vidioc_s_tuner,
.vidioc_s_std = vidioc_s_std,
.tvnorms  = CX88_NORMS,
-   .current_norm = V4L2_STD_PAL_BG,
+   .current_norm = V4L2_STD_NTSC_M,
 };
 
 /* -- */
diff --git a/drivers/media/video/cx88/cx88-video.c 
b/drivers/media/video/cx88/cx88-video.c
index d388a42..360046e 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -1657,7 +1657,7 @@ static struct video_device cx8800_video_template =
.vidioc_g_frequency   = vidioc_g_frequency,
.vidioc_s_frequency   = vidioc_s_frequency,
.tvnorms  = CX88_NORMS,
-   .current_norm = V4L2_STD_PAL_BG,
+   .current_norm = V4L2_STD_NTSC_M,
 };
 
 static const struct file_operations radio_fops =
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5111): Saa7134: add support for Terratec Cinergy HT PCI

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9de271e66d1172e7fa68ba0a7ecec2f9fb8d78c1
Commit: 9de271e66d1172e7fa68ba0a7ecec2f9fb8d78c1
Parent: a4b662f736c7919207da113814c35cad340c67fd
Author: Michael Krufky [EMAIL PROTECTED]
AuthorDate: Tue Jan 16 18:36:40 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:47 2007 -0200

V4L/DVB (5111): Saa7134: add support for Terratec Cinergy HT PCI

Add support for Terratec Cinergy HT PCI

Signed-off-by: Giorgio Moscardi [EMAIL PROTECTED]
Signed-off-by: Michael Krufky [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 Documentation/video4linux/CARDLIST.saa7134  |1 +
 drivers/media/video/saa7134/saa7134-cards.c |   30 +++
 drivers/media/video/saa7134/saa7134-dvb.c   |   12 ++
 drivers/media/video/saa7134/saa7134.h   |1 +
 4 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/Documentation/video4linux/CARDLIST.saa7134 
b/Documentation/video4linux/CARDLIST.saa7134
index bcba180..a12246a 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -106,3 +106,4 @@
 105 - Terratec Cinergy HT PCMCIA   [153b:1172]
 106 - Encore ENLTV [1131:2342,1131:2341,3016:2344]
 107 - Encore ENLTV-FM  [1131:230f]
+108 - Terratec Cinergy HT PCI  [153b:1175]
diff --git a/drivers/media/video/saa7134/saa7134-cards.c 
b/drivers/media/video/saa7134/saa7134-cards.c
index 0403ae9..89f3210 100644
--- a/drivers/media/video/saa7134/saa7134-cards.c
+++ b/drivers/media/video/saa7134/saa7134-cards.c
@@ -3266,6 +3266,29 @@ struct saa7134_board saa7134_boards[] = {
.amux = 0,
},
},
+   [SAA7134_BOARD_CINERGY_HT_PCI] = {
+   .name   = Terratec Cinergy HT PCI,
+   .audio_clock= 0x00187de7,
+   .tuner_type = TUNER_PHILIPS_TDA8290,
+   .radio_type = UNSET,
+   .tuner_addr = ADDR_UNSET,
+   .radio_addr = ADDR_UNSET,
+   .mpeg   = SAA7134_MPEG_DVB,
+   .inputs = {{
+   .name   = name_tv,
+   .vmux   = 1,
+   .amux   = TV,
+   .tv = 1,
+   },{
+   .name   = name_comp1,
+   .vmux   = 0,
+   .amux   = LINE1,
+   },{
+   .name   = name_svideo,
+   .vmux   = 6,
+   .amux   = LINE1,
+   }},
+   },
 };
 
 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
@@ -3929,6 +3952,12 @@ struct pci_device_id saa7134_pci_tbl[] = {
.subdevice= 0x230f,
.driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM,
},{
+   .vendor   = PCI_VENDOR_ID_PHILIPS,
+   .device   = PCI_DEVICE_ID_PHILIPS_SAA7133,
+   .subvendor= 0x153b,
+   .subdevice= 0x1175,
+   .driver_data  = SAA7134_BOARD_CINERGY_HT_PCI,
+   },{
/* --- boards without eeprom + subsystem ID --- */
.vendor   = PCI_VENDOR_ID_PHILIPS,
.device   = PCI_DEVICE_ID_PHILIPS_SAA7134,
@@ -4260,6 +4289,7 @@ int saa7134_board_init2(struct saa7134_dev *dev)
}
break;
case SAA7134_BOARD_CINERGY_HT_PCMCIA:
+   case SAA7134_BOARD_CINERGY_HT_PCI:
/* make the tda10046 find its eeprom */
{
u8 data[] = { 0x3c, 0x33, 0x60};
diff --git a/drivers/media/video/saa7134/saa7134-dvb.c 
b/drivers/media/video/saa7134/saa7134-dvb.c
index c33f6a6..e3059fd 100644
--- a/drivers/media/video/saa7134/saa7134-dvb.c
+++ b/drivers/media/video/saa7134/saa7134-dvb.c
@@ -1426,6 +1426,18 @@ static int dvb_init(struct saa7134_dev *dev)
 
}
break;
+   case SAA7134_BOARD_CINERGY_HT_PCI:
+   dev-dvb.frontend = dvb_attach(tda10046_attach,
+  cinergy_ht_config,
+  dev-i2c_adap);
+   if (dev-dvb.frontend) {
+   dev-dvb.frontend-ops.i2c_gate_ctrl = 
tda8290_i2c_gate_ctrl;
+   dev-dvb.frontend-ops.tuner_ops.init = 
cinergy_ht_tuner_init;
+   dev-dvb.frontend-ops.tuner_ops.sleep = 
cinergy_ht_tuner_sleep;
+   dev-dvb.frontend-ops.tuner_ops.set_params = 
md8800_dvbt_pll_set;
+
+   }
+   break;
default:
printk(%s: Huh? unknown DVB card?\n,dev-name);
break;
diff --git a/drivers/media/video/saa7134/saa7134.h 

V4L/DVB (5109): Convert cx88-blackbird to use video_ioctl2

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b3c4ee7016ad9d4c51887591b8a62c05f59cc498
Commit: b3c4ee7016ad9d4c51887591b8a62c05f59cc498
Parent: 7730bef9c5eaaecc3f441cd389ae189b17759117
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:59:38 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:46 2007 -0200

V4L/DVB (5109): Convert cx88-blackbird to use video_ioctl2

This patch finishes cx88-blackbird conversion to use video_ioctl2. Video
standards are generated automatically inside videodev.c. the big ioctl
parser is removed, using, instead, video_ioctl2.

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-blackbird.c |  778 +
 drivers/media/video/cx88/cx88.h   |7 -
 2 files changed, 344 insertions(+), 441 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-blackbird.c 
b/drivers/media/video/cx88/cx88-blackbird.c
index 187e917..8fcef79 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -6,6 +6,9 @@
  *(c) 2004 Jelle Foks [EMAIL PROTECTED]
  *(c) 2004 Gerd Knorr [EMAIL PROTECTED]
  *
+ *(c) 2005-2006 Mauro Carvalho Chehab [EMAIL PROTECTED]
+ *- video_ioctl2 conversion
+ *
  *  Includes parts from the ivtv driver( http://ivtv.sourceforge.net/),
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -53,73 +56,6 @@ MODULE_PARM_DESC(debug,enable debug messages [blackbird]);
 
 /* -- */
 
-
-struct cx88_tvnorm {
-   char   *name;
-   v4l2_std_idid;
-   u32cxiformat;
-   u32cxoformat;
-};
-
-static struct cx88_tvnorm tvnorms[] = {
-   {
-   .name  = NTSC-M,
-   .id= V4L2_STD_NTSC_M,
-   .cxiformat = VideoFormatNTSC,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = NTSC-JP,
-   .id= V4L2_STD_NTSC_M_JP,
-   .cxiformat = VideoFormatNTSCJapan,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = PAL-BG,
-   .id= V4L2_STD_PAL_BG,
-   .cxiformat = VideoFormatPAL,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = PAL-DK,
-   .id= V4L2_STD_PAL_DK,
-   .cxiformat = VideoFormatPAL,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = PAL-I,
-   .id= V4L2_STD_PAL_I,
-   .cxiformat = VideoFormatPAL,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = PAL-M,
-   .id= V4L2_STD_PAL_M,
-   .cxiformat = VideoFormatPALM,
-   .cxoformat = 0x1c1f0008,
-   },{
-   .name  = PAL-N,
-   .id= V4L2_STD_PAL_N,
-   .cxiformat = VideoFormatPALN,
-   .cxoformat = 0x1c1f0008,
-   },{
-   .name  = PAL-Nc,
-   .id= V4L2_STD_PAL_Nc,
-   .cxiformat = VideoFormatPALNC,
-   .cxoformat = 0x1c1f0008,
-   },{
-   .name  = PAL-60,
-   .id= V4L2_STD_PAL_60,
-   .cxiformat = VideoFormatPAL60,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = SECAM-L,
-   .id= V4L2_STD_SECAM_L,
-   .cxiformat = VideoFormatSECAM,
-   .cxoformat = 0x181f0008,
-   },{
-   .name  = SECAM-DK,
-   .id= V4L2_STD_SECAM_DK,
-   .cxiformat = VideoFormatSECAM,
-   .cxoformat = 0x181f0008,
-   }
-};
-
 #define BLACKBIRD_FIRM_IMAGE_SIZE 256*1024
 
 /* defines below are from ivtv-driver.h */
@@ -777,8 +713,13 @@ static int blackbird_queryctrl(struct cx8802_dev *dev, 
struct v4l2_queryctrl *qc
return 0;
 }
 
-static int blackbird_querymenu(struct cx8802_dev *dev, struct v4l2_querymenu 
*qmenu)
+/* -- */
+/* IOCTL Handlers */
+
+static int vidioc_querymenu (struct file *file, void *priv,
+   struct v4l2_querymenu *qmenu)
 {
+   struct cx8802_dev *dev  = ((struct cx8802_fh *)priv)-dev;
struct v4l2_queryctrl qctrl;
 
qctrl.id = qmenu-id;
@@ -786,413 +727,347 @@ static int blackbird_querymenu(struct cx8802_dev *dev, 
struct v4l2_querymenu *qm
return v4l2_ctrl_query_menu(qmenu, qctrl, 
cx2341x_ctrl_get_menu(qmenu-id));
 }
 
-/* -- */
-
-static int mpeg_do_ioctl(struct inode *inode, struct 

V4L/DVB (5108): Remove_cx88_ioctl

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7730bef9c5eaaecc3f441cd389ae189b17759117
Commit: 7730bef9c5eaaecc3f441cd389ae189b17759117
Parent: 84f1b6783a8f7057f3d7a5388c5f3f4a8bce7b0b
Author: Mauro Carvalho Chehab [EMAIL PROTECTED]
AuthorDate: Sat Jan 20 13:59:35 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:46 2007 -0200

V4L/DVB (5108): Remove_cx88_ioctl

cx88_ioctl were merged at the master ioctl handler on cx88-blackbird

Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/cx88/cx88-blackbird.c |   27 ---
 1 files changed, 0 insertions(+), 27 deletions(-)

diff --git a/drivers/media/video/cx88/cx88-blackbird.c 
b/drivers/media/video/cx88/cx88-blackbird.c
index e194949..187e917 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -119,9 +119,6 @@ static struct cx88_tvnorm tvnorms[] = {
.cxoformat = 0x181f0008,
}
 };
-int cx88_do_ioctl( struct inode *inode, struct file *file,
-  int radio, struct cx88_core *core, unsigned int cmd,
-  void *arg, v4l2_kioctl driver_ioctl );
 
 #define BLACKBIRD_FIRM_IMAGE_SIZE 256*1024
 
@@ -1000,30 +997,6 @@ static int mpeg_do_ioctl(struct inode *inode, struct file 
*file,
return cx8800_ctrl_query(qctrl);
}
 
-   default:
-   return cx88_do_ioctl(inode, file, 0, dev-core, cmd, arg, 
cx88_ioctl_hook);
-   }
-   return 0;
-}
-
-int cx88_do_ioctl(struct inode *inode, struct file *file, int radio,
- struct cx88_core *core, unsigned int cmd, void *arg, 
v4l2_kioctl driver_ioctl)
-{
-   int err;
-
-   if (debug) {
-  if (debug  1) {
-  if (_IOC_DIR(cmd)  _IOC_WRITE)
-  v4l_printk_ioctl_arg(cx88(w),cmd, arg);
-  else if (!_IOC_DIR(cmd)  _IOC_READ) {
-  v4l_print_ioctl(cx88, cmd);
-  }
-  } else
-  v4l_print_ioctl(core-name,cmd);
-
-   }
-
-   switch (cmd) {
/* -- input switching -- */
case VIDIOC_ENUMINPUT:
{
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


V4L/DVB (5113): Adds video output routing

2007-02-21 Thread Linux Kernel Mailing List
Gitweb: 
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4cbca185e9adf3d48205b60bf196ebb9882af043
Commit: 4cbca185e9adf3d48205b60bf196ebb9882af043
Parent: 9de271e66d1172e7fa68ba0a7ecec2f9fb8d78c1
Author: Marco Schluessler [EMAIL PROTECTED]
AuthorDate: Sun Jan 21 19:43:38 2007 -0300
Committer:  Mauro Carvalho Chehab [EMAIL PROTECTED]
CommitDate: Wed Feb 21 13:34:47 2007 -0200

V4L/DVB (5113): Adds video output routing

Nexus CA needs to use a different routing on saa7115 module.

Signed-off-by: Marco Schluessler [EMAIL PROTECTED]
Signed-off-by: Mauro Carvalho Chehab [EMAIL PROTECTED]
---
 drivers/media/video/saa7115.c |   24 ++--
 include/media/saa7115.h   |3 +++
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c
index c2374ed..389e518 100644
--- a/drivers/media/video/saa7115.c
+++ b/drivers/media/video/saa7115.c
@@ -71,6 +71,7 @@ I2C_CLIENT_INSMOD;
 struct saa711x_state {
v4l2_std_id std;
int input;
+   int output;
int enable;
int radio;
int bright;
@@ -1301,7 +1302,7 @@ static int saa711x_command(struct i2c_client *client, 
unsigned int cmd, void *ar
struct v4l2_routing *route = arg;
 
route-input = state-input;
-   route-output = 0;
+   route-output = state-output;
break;
}
 
@@ -1309,7 +1310,7 @@ static int saa711x_command(struct i2c_client *client, 
unsigned int cmd, void *ar
{
struct v4l2_routing *route = arg;
 
-   v4l_dbg(1, debug, client, decoder set input %d\n, 
route-input);
+   v4l_dbg(1, debug, client, decoder set input %d output %d\n, 
route-input, route-output);
/* saa7113 does not have these inputs */
if (state-ident == V4L2_IDENT_SAA7113 
(route-input == SAA7115_COMPOSITE4 ||
@@ -1318,10 +1319,12 @@ static int saa711x_command(struct i2c_client *client, 
unsigned int cmd, void *ar
}
if (route-input  SAA7115_SVIDEO3)
return -EINVAL;
-   if (state-input == route-input)
+   if (route-output  SAA7115_IPORT_ON)
+   return -EINVAL;
+   if (state-input == route-input  state-output == 
route-output)
break;
-   v4l_dbg(1, debug, client, now setting %s input\n,
-   (route-input = SAA7115_SVIDEO0) ? S-Video : 
Composite);
+   v4l_dbg(1, debug, client, now setting %s input %s output\n,
+   (route-input = SAA7115_SVIDEO0) ? S-Video : 
Composite, (route-output == SAA7115_IPORT_ON) ? iport on : iport off);
state-input = route-input;
 
/* select mode */
@@ -1333,6 +1336,14 @@ static int saa711x_command(struct i2c_client *client, 
unsigned int cmd, void *ar
saa711x_write(client, R_09_LUMA_CNTL,
  (saa711x_read(client, R_09_LUMA_CNTL)  0x7f) |
   (state-input = SAA7115_SVIDEO0 ? 0x80 : 0x0));
+
+   state-output = route-output;
+   if (state-ident == V4L2_IDENT_SAA7114 ||
+   state-ident == V4L2_IDENT_SAA7115) {
+   saa711x_write(client, R_83_X_PORT_I_O_ENA_AND_OUT_CLK,
+ (saa711x_read(client, 
R_83_X_PORT_I_O_ENA_AND_OUT_CLK)  0xfe) |
+  (state-output  0x01));
+   }
break;
}
 
@@ -1492,6 +1503,7 @@ static int saa711x_attach(struct i2c_adapter *adapter, 
int address, int kind)
return -ENOMEM;
}
state-input = -1;
+   state-output = SAA7115_IPORT_ON;
state-enable = 1;
state-radio = 0;
state-bright = 128;
@@ -1550,7 +1562,7 @@ static int saa711x_attach(struct i2c_adapter *adapter, 
int address, int kind)
 
 static int saa711x_probe(struct i2c_adapter *adapter)
 {
-   if (adapter-class  I2C_CLASS_TV_ANALOG)
+   if (adapter-class  I2C_CLASS_TV_ANALOG || adapter-class  
I2C_CLASS_TV_DIGITAL)
return i2c_probe(adapter, addr_data, saa711x_attach);
return 0;
 }
diff --git a/include/media/saa7115.h b/include/media/saa7115.h
index 9f0e228..f677dfb 100644
--- a/include/media/saa7115.h
+++ b/include/media/saa7115.h
@@ -42,5 +42,8 @@
 #define SAA7115_FREQ_FL_CGCDIV (1  1)   /* SA 3A[6], CGCDIV, SAA7115 
only */
 #define SAA7115_FREQ_FL_APLL   (1  2)   /* SA 3A[3], APLL, SAA7114/5 
only */
 
+#define SAA7115_IPORT_ON1
+#define SAA7115_IPORT_OFF   0
+
 #endif
 
-
To unsubscribe from this list: send the line unsubscribe git-commits-head in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html