[RFC PATCH v5 1/2] dmabuf-sync: Introduce buffer synchronization framework

2013-07-12 Thread Inki Dae
This patch adds a buffer synchronization framework based on DMA BUF[1]
and and based on ww-mutexes[2] for lock mechanism.

The purpose of this framework is to provide not only buffer access control
to CPU and DMA but also easy-to-use interfaces for device drivers and
user application. This framework can be used for all dma devices using
system memory as dma buffer, especially for most ARM based SoCs.

Changelog v5:
- Rmove a dependence on reservation_object: the reservation_object is used
  to hook up to ttm and dma-buf for easy sharing of reservations across
  devices. However, the dmabuf sync can be used for all dma devices; v4l2
  and drm based drivers, so doesn't need the reservation_object anymore.
  With regared to this, it adds 'void *sync' to dma_buf structure.
- All patches are rebased on mainline, Linux v3.10.

Changelog v4:
- Add user side interface for buffer synchronization mechanism and update
  descriptions related to the user side interface.

Changelog v3:
- remove cache operation relevant codes and update document file.

Changelog v2:
- use atomic_add_unless to avoid potential bug.
- add a macro for checking valid access type.
- code clean.

The mechanism of this framework has the following steps,
1. Register dmabufs to a sync object - A task gets a new sync object and
can add one or more dmabufs that the task wants to access.
This registering should be performed when a device context or an event
context such as a page flip event is created or before CPU accesses a shared
buffer.

dma_buf_sync_get(a sync object, a dmabuf);

2. Lock a sync object - A task tries to lock all dmabufs added in its own
sync object. Basically, the lock mechanism uses ww-mutex[1] to avoid dead
lock issue and for race condition between CPU and CPU, CPU and DMA, and DMA
and DMA. Taking a lock means that others cannot access all locked dmabufs
until the task that locked the corresponding dmabufs, unlocks all the locked
dmabufs.
This locking should be performed before DMA or CPU accesses these dmabufs.

dma_buf_sync_lock(a sync object);

3. Unlock a sync object - The task unlocks all dmabufs added in its own sync
object. The unlock means that the DMA or CPU accesses to the dmabufs have
been completed so that others may access them.
This unlocking should be performed after DMA or CPU has completed accesses
to the dmabufs.

dma_buf_sync_unlock(a sync object);

4. Unregister one or all dmabufs from a sync object - A task unregisters
the given dmabufs from the sync object. This means that the task dosen't
want to lock the dmabufs.
The unregistering should be performed after DMA or CPU has completed
accesses to the dmabufs or when dma_buf_sync_lock() is failed.

dma_buf_sync_put(a sync object, a dmabuf);
dma_buf_sync_put_all(a sync object);

The described steps may be summarized as:
get - lock - CPU or DMA access to a buffer/s - unlock - put

This framework includes the following two features.
1. read (shared) and write (exclusive) locks - A task is required to declare
the access type when the task tries to register a dmabuf;
READ, WRITE, READ DMA, or WRITE DMA.

The below is example codes,
struct dmabuf_sync *sync;

sync = dmabuf_sync_init(NULL, test sync);

dmabuf_sync_get(sync, dmabuf, DMA_BUF_ACCESS_R);
...

And the below can be used as access types:
DMA_BUF_ACCESS_R - CPU will access a buffer for read.
DMA_BUF_ACCESS_W - CPU will access a buffer for read or write.
DMA_BUF_ACCESS_DMA_R - DMA will access a buffer for read
DMA_BUF_ACCESS_DMA_W - DMA will access a buffer for read or
write.

2. Mandatory resource releasing - a task cannot hold a lock indefinitely.
A task may never try to unlock a buffer after taking a lock to the buffer.
In this case, a timer handler to the corresponding sync object is called
in five (default) seconds and then the timed-out buffer is unlocked by work
queue handler to avoid lockups and to enforce resources of the buffer.

The below is how to use interfaces for device driver:
1. Allocate and Initialize a sync object:
struct dmabuf_sync *sync;

sync = dmabuf_sync_init(NULL, test sync);
...

2. Add a dmabuf to the sync object when setting up dma buffer relevant
   registers:
dmabuf_sync_get(sync, dmabuf, DMA_BUF_ACCESS_READ);
...

3. Lock all dmabufs of the sync object before DMA or CPU accesses
   the dmabufs:
dmabuf_sync_lock(sync);
...

4. Now CPU or DMA can access all dmabufs locked in step 3.

5. Unlock all dmabufs added in a sync object after DMA or CPU access
   to these dmabufs is completed:
   

[RFC PATCH v1 2/2] dma-buf: add lock callback for fcntl system call

2013-07-12 Thread Inki Dae
This patch adds lock callback to dma buf file operations,
and this callback will be called by fcntl system call.

With this patch, fcntl system call can be used for buffer
synchronization between CPU and CPU, and CPU and DMA in user mode.

Signed-off-by: Inki Dae inki@samsung.com
Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
---
 drivers/base/dma-buf.c |   33 +
 1 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/drivers/base/dma-buf.c b/drivers/base/dma-buf.c
index 9a26981..e1b8583 100644
--- a/drivers/base/dma-buf.c
+++ b/drivers/base/dma-buf.c
@@ -80,9 +80,42 @@ static int dma_buf_mmap_internal(struct file *file, struct 
vm_area_struct *vma)
return dmabuf-ops-mmap(dmabuf, vma);
 }
 
+static int dma_buf_lock(struct file *file, int cmd, struct file_lock *fl)
+{
+   struct dma_buf *dmabuf;
+   unsigned int type;
+   bool wait = false;
+
+   if (!is_dma_buf_file(file))
+   return -EINVAL;
+
+   dmabuf = file-private_data;
+
+   if ((fl-fl_type  F_UNLCK) == F_UNLCK) {
+   dmabuf_sync_single_unlock(dmabuf);
+   return 0;
+   }
+
+   /* convert flock type to dmabuf sync type. */
+   if ((fl-fl_type  F_WRLCK) == F_WRLCK)
+   type = DMA_BUF_ACCESS_W;
+   else if ((fl-fl_type  F_RDLCK) == F_RDLCK)
+   type = DMA_BUF_ACCESS_R;
+   else
+   return -EINVAL;
+
+   if (fl-fl_flags  FL_SLEEP)
+   wait = true;
+
+   /* TODO. the locking to certain region should also be considered. */
+
+   return dmabuf_sync_single_lock(dmabuf, type, wait);
+}
+
 static const struct file_operations dma_buf_fops = {
.release= dma_buf_release,
.mmap   = dma_buf_mmap_internal,
+   .lock   = dma_buf_lock,
 };
 
 /*
-- 
1.7.5.4

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC PATCH 0/2 v5] Introduce buffer synchronization framework

2013-07-12 Thread Inki Dae
Hi all,

This patch set introduces a buffer synchronization framework based
on DMA BUF[1] and based on ww-mutexes[2] for lock mechanism.

The purpose of this framework is to provide not only buffer access
control to CPU and CPU, and CPU and DMA, and DMA and DMA but also
easy-to-use interfaces for device drivers and user application.
In addtion, this patch set suggests a way for enhancing performance.

For generic user mode interface, we have used fcntl system call[3].
As you know, user application sees a buffer object as a dma-buf file
descriptor. So fcntl() call with the file descriptor means to lock
some buffer region being managed by the dma-buf object.
For more detail, you can refer to the dma-buf-sync.txt in Documentation/

Moreover, we had tried to find how we could utilize limited hardware
resources more using buffer synchronization mechanism. And finally,
we have realized that it could enhance performance using multi threads
with this buffer synchronization mechanism: DMA and CPU works individually
so CPU could perform other works while DMA is performing some works,
and vise versa.

However, in the conventional way, that is not easy to do so because DMA
operation is depend on CPU operation, and vice versa.

Conventional way:
User Kernel
-
CPU writes something to src
send the src to driver-
 update DMA register
request DMA start(1)---
 DMA start
-completion signal(2)--
CPU accesses dst

(1) Request DMA start after the CPU access to src buffer is completed.
(2) Access dst buffer after DMA access to the dst buffer is completed.

On the other hand, if there is something to control buffer access between CPU
and DMA? The below shows that:

User(thread a)  User(thread b)Kernel
-
send a src to driver--
  update DMA register
lock the src
request DMA start(1)--
CPU acccess to src
unlock the srclock src and dst
  DMA start
-completion signal(2)-
lock dst  DMA completion
CPU access to dst unlock src and dst
unlock DST

(1) Try to start DMA operation while CPU is accessing the src buffer.
(2) Try CPU access to dst buffer while DMA is accessing the dst buffer.

This means that CPU or DMA could do more works.

In the same way, we could reduce hand shaking overhead between
two processes when those processes need to share a shared buffer.
There may be other cases that we could reduce overhead as well.


References:
[1] http://lwn.net/Articles/470339/
[2] https://patchwork.kernel.org/patch/2625361/
[3] http://linux.die.net/man/2/fcntl


Inki Dae (2):
  [RFC PATCH v5 1/2] dmabuf-sync: Introduce buffer synchronization framework
  [RFC PATCH v1 2/2] dma-buf: add lock callback for fcntl system call

 Documentation/dma-buf-sync.txt |  290 +
 drivers/base/Kconfig   |7 +
 drivers/base/Makefile  |1 +
 drivers/base/dma-buf.c |   37 +++
 drivers/base/dmabuf-sync.c |  674 
 include/linux/dma-buf.h|   16 +
 include/linux/dmabuf-sync.h|  178 +++
 7 files changed, 1203 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/dma-buf-sync.txt
 create mode 100644 drivers/base/dmabuf-sync.c
 create mode 100644 include/linux/dmabuf-sync.h

-- 
1.7.5.4

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[DTV Tables] Now also on github.

2013-07-12 Thread Oliver Schinagl

Hey all,

since I hadn't received any comment in the previous message (which was a 
reply only) I thought i get this through the list as well.


I have created a github repostiory [0] for the dtv-tables so that it is 
easier for people to fork and upstream new data.


I'm not a fan to using github and not having patches submitted to me/the 
mailing list, but this isn't source code, but data that I feel is 
important to have in the tree as fast as possible.


I wouldn't be surprised that at some point some random manufacturer puts 
a reference to this tree into their system, be it closed or open, and it 
would be nice that our tables be as up to date as possible.


The best workflow I can think of, is that I will merge requests on 
github, pull them to my local repository, send the commit to the ML list 
before pushing it to linuxtv.org, but if better ideas arise, I'm all ears.


Oliver
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2] ov10635: Add OmniVision ov10635 SoC camera driver

2013-07-12 Thread phil . edworthy
Hi Guennadi,

snip
 Well, I think, both of you will agree, that these register value lists 
 look horrible and actually have little to do with open-source software, 
 but I don't know what to do about them either. We could just reject them 

 and only accept drivers, properly describing what they do with the 
 hardware, or request to move this into one of firmware loading 
options... 
 But I'm not sure any of these options would actually do us any good. 
Just 
 sayin'.
Any further thoughts on what to do about this driver?

Based on what I have seen, we aren't going to get the info to properly 
describe _all_ of the registers. It's a shame the camera's registers don't 
default to usable settings, but that's what we have.

In the case of this driver, there are a number of registers that are 
programmed based on the required resolution, framerate and format. 
Extracting that from the material I had was rather painful and the result 
is useful for anyone wanting to use this camera. Any register written to 
outside ov10635_regs_default[] should be programmed in some meaningful 
way, whereas those in ov10635_regs_default[] should be treated like 
firmware. However, even those registers accessed outside of 
ov10635_regs_default[] could still do with better descriptions. I should 
note that some of the values written to registers are empirically derived 
since they are based on device timing. I don't have any details about the 
device timing, just the values that were written for a number of different 
modes (resolution and framerate).

Maybe the pragmatic approach is to use firmware for all those in 
ov10635_regs_default[], and the rest of the registers have to be well 
documented. I was asked to remove some comments about register 
names/functionality by OmniVision, but I can ask again if it helps.

Thanks
Phil
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH RFC] media: lirc: Allow lirc dev to talk to rc device

2013-07-12 Thread Srinivas KANDAGATLA
From: Srinivas Kandagatla srinivas.kandaga...@st.com

The use case is simple, if any rc device has allowed protocols =
RC_TYPE_LIRC and map_name = RC_MAP_LIRC set, the driver open will be never
called. The reason for this is, all of the key maps except lirc have some
KEYS in there map, so during rc_register_device process these keys are
matched against the input drivers and open is performed, so for the case
of RC_MAP_EMPTY, a tty/vt/keyboard is matched and the driver open is
performed.

In case of lirc, there is no match and result is that there is no open
performed, however the lirc-dev will go ahead and create a /dev/lirc0
node. Now when lircd/mode2 opens this device, no data is available
because the driver was never opened.

lirc_dev seems to have no link with actual rc device w.r.t open/close.
This patch adds the missing link rc_dev pointer to lirc_driver structure
for cases like this, so that it can do the open/close of the real driver
in accordance to lircd/mode2 open/close.

Without this patch its impossible to open a rc device which has
RC_TYPE_LIRC ad RC_MAP_LIRC set.

Signed-off-by: Srinivas Kandagatla srinivas.kandaga...@st.com
---
 drivers/media/rc/ir-lirc-codec.c |1 +
 drivers/media/rc/lirc_dev.c  |   14 ++
 include/media/lirc_dev.h |1 +
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
index e456126..d5ad27f 100644
--- a/drivers/media/rc/ir-lirc-codec.c
+++ b/drivers/media/rc/ir-lirc-codec.c
@@ -375,6 +375,7 @@ static int ir_lirc_register(struct rc_dev *dev)
drv-code_length = sizeof(struct ir_raw_event) * 8;
drv-fops = lirc_fops;
drv-dev = dev-dev;
+   drv-rc_dev = dev;
drv-owner = THIS_MODULE;
 
drv-minor = lirc_register_driver(drv);
diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c
index 8dc057b..485bf7d 100644
--- a/drivers/media/rc/lirc_dev.c
+++ b/drivers/media/rc/lirc_dev.c
@@ -35,6 +35,7 @@
 #include linux/device.h
 #include linux/cdev.h
 
+#include media/rc-core.h
 #include media/lirc.h
 #include media/lirc_dev.h
 
@@ -437,6 +438,7 @@ EXPORT_SYMBOL(lirc_unregister_driver);
 int lirc_dev_fop_open(struct inode *inode, struct file *file)
 {
struct irctl *ir;
+   struct rc_dev *rc_dev;
struct cdev *cdev;
int retval = 0;
 
@@ -467,6 +469,13 @@ int lirc_dev_fop_open(struct inode *inode, struct file 
*file)
goto error;
}
 
+   rc_dev = ir-d.rc_dev;
+   if (rc_dev  rc_dev-open) {
+   retval = rc_dev-open(rc_dev);
+   if (retval)
+   goto error;
+   }
+
cdev = ir-cdev;
if (try_module_get(cdev-owner)) {
ir-open++;
@@ -499,6 +508,7 @@ int lirc_dev_fop_close(struct inode *inode, struct file 
*file)
 {
struct irctl *ir = irctls[iminor(inode)];
struct cdev *cdev;
+   struct rc_dev *rc_dev;
 
if (!ir) {
printk(KERN_ERR %s: called with invalid irctl\n, __func__);
@@ -511,6 +521,10 @@ int lirc_dev_fop_close(struct inode *inode, struct file 
*file)
 
WARN_ON(mutex_lock_killable(lirc_dev_lock));
 
+   rc_dev = ir-d.rc_dev;
+   if (rc_dev  rc_dev-close)
+   rc_dev-close(rc_dev);
+
ir-open--;
if (ir-attached) {
ir-d.set_use_dec(ir-d.data);
diff --git a/include/media/lirc_dev.h b/include/media/lirc_dev.h
index 168dd0b..96dccb6 100644
--- a/include/media/lirc_dev.h
+++ b/include/media/lirc_dev.h
@@ -139,6 +139,7 @@ struct lirc_driver {
struct lirc_buffer *rbuf;
int (*set_use_inc) (void *data);
void (*set_use_dec) (void *data);
+   struct rc_dev *rc_dev;
const struct file_operations *fops;
struct device *dev;
struct module *owner;
-- 
1.7.6.5

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [media] usbtv: Add S-Video input support

2013-07-12 Thread Lubomir Rintel
Alongside already existing Composite input.

Signed-off-by: Lubomir Rintel lkund...@v3.sk
Cc: Hans Verkuil hans.verk...@cisco.com
Cc: Mauro Carvalho Chehab mche...@redhat.com
Cc: linux-ker...@vger.kernel.org
Cc: linux-media@vger.kernel.org
---
 drivers/media/usb/usbtv/usbtv.c |   99 ---
 1 files changed, 82 insertions(+), 17 deletions(-)

diff --git a/drivers/media/usb/usbtv/usbtv.c b/drivers/media/usb/usbtv/usbtv.c
index 9165017..9b250a7 100644
--- a/drivers/media/usb/usbtv/usbtv.c
+++ b/drivers/media/usb/usbtv/usbtv.c
@@ -91,17 +91,78 @@ struct usbtv {
u32 frame_id;
int chunks_done;
 
+   enum {
+   USBTV_COMPOSITE_INPUT,
+   USBTV_SVIDEO_INPUT,
+   } input;
int iso_size;
unsigned int sequence;
struct urb *isoc_urbs[USBTV_ISOC_TRANSFERS];
 };
 
-static int usbtv_setup_capture(struct usbtv *usbtv)
+static int usbtv_set_regs(struct usbtv *usbtv, const u16 regs[][2], int size)
 {
int ret;
int pipe = usb_rcvctrlpipe(usbtv-udev, 0);
int i;
-   static const u16 protoregs[][2] = {
+
+   for (i = 0; i  size; i++) {
+   u16 index = regs[i][0];
+   u16 value = regs[i][1];
+
+   ret = usb_control_msg(usbtv-udev, pipe, USBTV_REQUEST_REG,
+   USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
+   value, index, NULL, 0, 0);
+   if (ret  0)
+   return ret;
+   }
+
+   return 0;
+}
+
+static int usbtv_select_input(struct usbtv *usbtv, int input)
+{
+   int ret;
+
+   static const u16 composite[][2] = {
+   { USBTV_BASE + 0x0105, 0x0060 },
+   { USBTV_BASE + 0x011f, 0x00f2 },
+   { USBTV_BASE + 0x0127, 0x0060 },
+   { USBTV_BASE + 0x00ae, 0x0010 },
+   { USBTV_BASE + 0x0284, 0x00aa },
+   { USBTV_BASE + 0x0239, 0x0060 },
+   };
+
+   static const u16 svideo[][2] = {
+   { USBTV_BASE + 0x0105, 0x0010 },
+   { USBTV_BASE + 0x011f, 0x00ff },
+   { USBTV_BASE + 0x0127, 0x0060 },
+   { USBTV_BASE + 0x00ae, 0x0030 },
+   { USBTV_BASE + 0x0284, 0x0088 },
+   { USBTV_BASE + 0x0239, 0x0060 },
+   };
+
+   switch (input) {
+   case USBTV_COMPOSITE_INPUT:
+   ret = usbtv_set_regs(usbtv, composite, ARRAY_SIZE(composite));
+   break;
+   case USBTV_SVIDEO_INPUT:
+   ret = usbtv_set_regs(usbtv, svideo, ARRAY_SIZE(svideo));
+   break;
+   default:
+   ret = -EINVAL;
+   }
+
+   if (!ret)
+   usbtv-input = input;
+
+   return ret;
+}
+
+static int usbtv_setup_capture(struct usbtv *usbtv)
+{
+   int ret;
+   static const u16 setup[][2] = {
/* These seem to enable the device. */
{ USBTV_BASE + 0x0008, 0x0001 },
{ USBTV_BASE + 0x01d0, 0x00ff },
@@ -189,16 +250,13 @@ static int usbtv_setup_capture(struct usbtv *usbtv)
{ USBTV_BASE + 0x024f, 0x0002 },
};
 
-   for (i = 0; i  ARRAY_SIZE(protoregs); i++) {
-   u16 index = protoregs[i][0];
-   u16 value = protoregs[i][1];
+   ret = usbtv_set_regs(usbtv, setup, ARRAY_SIZE(setup));
+   if (ret)
+   return ret;
 
-   ret = usb_control_msg(usbtv-udev, pipe, USBTV_REQUEST_REG,
-   USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
-   value, index, NULL, 0, 0);
-   if (ret  0)
-   return ret;
-   }
+   ret = usbtv_select_input(usbtv, usbtv-input);
+   if (ret)
+   return ret;
 
return 0;
 }
@@ -443,10 +501,17 @@ static int usbtv_querycap(struct file *file, void *priv,
 static int usbtv_enum_input(struct file *file, void *priv,
struct v4l2_input *i)
 {
-   if (i-index  0)
+   switch (i-index) {
+   case USBTV_COMPOSITE_INPUT:
+   strlcpy(i-name, Composite, sizeof(i-name));
+   break;
+   case USBTV_SVIDEO_INPUT:
+   strlcpy(i-name, S-Video, sizeof(i-name));
+   break;
+   default:
return -EINVAL;
+   }
 
-   strlcpy(i-name, Composite, sizeof(i-name));
i-type = V4L2_INPUT_TYPE_CAMERA;
i-std = V4L2_STD_525_60;
return 0;
@@ -486,15 +551,15 @@ static int usbtv_g_std(struct file *file, void *priv, 
v4l2_std_id *norm)
 
 static int usbtv_g_input(struct file *file, void *priv, unsigned int *i)
 {
-   *i = 0;
+   struct usbtv *usbtv = video_drvdata(file);
+   *i = usbtv-input;
return 0;
 }
 
 static int usbtv_s_input(struct file *file, void *priv, unsigned int i)
 {
-   if (i  0)
-   return -EINVAL;
-   return 0;
+   struct usbtv *usbtv = video_drvdata(file);
+

Fwd: dtv-scan-tables tar archive

2013-07-12 Thread Oliver Schinagl

Mauro,

I think the archive is generated incorrectly. Could you take a look and 
see why? I shamefully admit I still am not sure where you did what to 
generate these ;)


Oliver


 Original Message 
Subject:dtv-scan-tables tar archive
Date:   Fri, 12 Jul 2013 10:59:56 +0200
From:   Till Maas opensou...@till.name
To: Oliver Schinagl oli...@schinagl.nl



Hi Oliver,

the tar archives at
http://linuxtv.org/downloads/dtv-scan-tables/
are broken.
xxd dtv-scan-tables-2013-04-12-495e59e.tar | less shows:

| 000: 6769 7420 6172 6368 6976 6520 2d2d 666f  git archive --fo
| 010: 726d 6174 2074 6172 202d 2d70 7265 6669  rmat tar --prefi
| 020: 7820 2f75 7372 2f73 6861 7265 2f64 7662  x /usr/share/dvb
| 030: 2f20 4845 4144 0a70 6178 5f67 6c6f 6261  / HEAD.pax_globa
| 040: 6c5f 6865 6164 6572      l_header

It seems like the git archive commandline somehow ended in the tarball.
E.g. the tarball should start with pax_global_header and not with git
archive.

Regards
Till



--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Add the latest tuning channel config data of Taiwan.

2013-07-12 Thread oliver
From: Huei-Horng Yo hiroshi...@gmail.com


Signed-off-by: Oliver Schinagl oli...@schinagl.nl
---
 channels-conf/dvb-t/tw-All | 21 +
 dvb-t/tw-All   | 11 +++
 dvb-t/tw-Kaohsiung |  6 --
 dvb-t/tw-Taipei|  7 ---
 4 files changed, 32 insertions(+), 13 deletions(-)
 create mode 100644 channels-conf/dvb-t/tw-All
 create mode 100644 dvb-t/tw-All
 delete mode 100644 dvb-t/tw-Kaohsiung
 delete mode 100644 dvb-t/tw-Taipei

diff --git a/channels-conf/dvb-t/tw-All b/channels-conf/dvb-t/tw-All
new file mode 100644
index 000..a7fbe50
--- /dev/null
+++ b/channels-conf/dvb-t/tw-All
@@ -0,0 +1,21 @@
+???:53300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1001:1002:100
+???:53300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1011:1012:101
+???:53300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1021:1022:102
+??HD???:53300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1031:1032:103
+ 
PTS:54500:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2011:2012:201
+??2??? 
PTS2:54500:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2021:2022:202
+ 
HTV:54500:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2031:2032:203
+???:55700:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3001:3002:300
+???:55700:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3011:3012:301
+???:55700:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3021:3022:302
+??:55700:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:0:303
+??HD???:55700:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_AUTO:QAM_16:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:3041:3042:304
+?? 
HD:56900:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2001:2002:200
+???:58100:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4001:4002:400
+???:58100:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4011:4012:401
+???:58100:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4021:4022:402
+?? 
HD???:58100:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:4031:4032:403
+??CTS:59300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5011:5012:501
+???:59300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5021:5022:502
+?:59300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5031:5032:503
+??HD:59300:INVERSION_AUTO:BANDWIDTH_6_MHZ:FEC_2_3:FEC_2_3:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:5041:5042:504
diff --git a/dvb-t/tw-All b/dvb-t/tw-All
new file mode 100644
index 000..8290355
--- /dev/null
+++ b/dvb-t/tw-All
@@ -0,0 +1,11 @@
+T 53300 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 53900 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 54500 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 55100 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 55700 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 56300 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 56900 6MHz 2/3 NONE QAM64 8k 1/4 NONE
+T 57500 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 58100 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 58700 6MHz 2/3 NONE QAM16 8k 1/4 NONE
+T 59300 6MHz 2/3 NONE QAM16 8k 1/4 NONE
diff --git a/dvb-t/tw-Kaohsiung b/dvb-t/tw-Kaohsiung
deleted file mode 100644
index f1eabc9..000
--- a/dvb-t/tw-Kaohsiung
+++ /dev/null
@@ -1,6 +0,0 @@
-# Taiwan - Kaohsiung, southern Taiwan
-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
-T 54500 6MHz 2/3 NONE QAM16 8k 1/4 NONE
-T 54500 6MHz 2/3 NONE QAM16 8k 1/8 NONE
-T 55700 6MHz 2/3 NONE QAM16 8k 1/4 NONE
-T 55700 6MHz 2/3 NONE QAM16 8k 1/8 NONE
diff --git a/dvb-t/tw-Taipei b/dvb-t/tw-Taipei
deleted file mode 100644
index 3bba686..000
--- a/dvb-t/tw-Taipei
+++ 

[RFC] Dropping of channels-conf from dtv-scan-tables

2013-07-12 Thread Oliver Schinagl

Hey all,

The channels-conf directory in the dtv-scan-tables repository is 
bitrotten. Besides tw-All, the newest addition is over 6 years ago, with 
some being as old as 9 years. While I'm sure it's possible that the 
channels-conf are still accurate, it's not really needed any longer.


Unless valid reasons are brought up to keep it, I will move it to a 
seperate branch and delete it from the master branch in the next few weeks.


Thanks,

Oliver
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH RFC] media: lirc: Allow lirc dev to talk to rc device

2013-07-12 Thread Sean Young
On Fri, Jul 12, 2013 at 09:55:28AM +0100, Srinivas KANDAGATLA wrote:
 From: Srinivas Kandagatla srinivas.kandaga...@st.com
 
 The use case is simple, if any rc device has allowed protocols =
 RC_TYPE_LIRC and map_name = RC_MAP_LIRC set, the driver open will be never
 called. The reason for this is, all of the key maps except lirc have some
 KEYS in there map, so during rc_register_device process these keys are
 matched against the input drivers and open is performed, so for the case
 of RC_MAP_EMPTY, a tty/vt/keyboard is matched and the driver open is
 performed.
 
 In case of lirc, there is no match and result is that there is no open
 performed, however the lirc-dev will go ahead and create a /dev/lirc0
 node. Now when lircd/mode2 opens this device, no data is available
 because the driver was never opened.

The rc device gets opened via the input interface. If the input device is
never opened (e.g. embedded with no console) then the rc open is never 
called and lirc will not work either. So that's another case.

 lirc_dev seems to have no link with actual rc device w.r.t open/close.
 This patch adds the missing link rc_dev pointer to lirc_driver structure
 for cases like this, so that it can do the open/close of the real driver
 in accordance to lircd/mode2 open/close.
 
 Without this patch its impossible to open a rc device which has
 RC_TYPE_LIRC ad RC_MAP_LIRC set.
 
 Signed-off-by: Srinivas Kandagatla srinivas.kandaga...@st.com
 ---
  drivers/media/rc/ir-lirc-codec.c |1 +
  drivers/media/rc/lirc_dev.c  |   14 ++
  include/media/lirc_dev.h |1 +
  3 files changed, 16 insertions(+), 0 deletions(-)
 
 diff --git a/drivers/media/rc/ir-lirc-codec.c 
 b/drivers/media/rc/ir-lirc-codec.c
 index e456126..d5ad27f 100644
 --- a/drivers/media/rc/ir-lirc-codec.c
 +++ b/drivers/media/rc/ir-lirc-codec.c
 @@ -375,6 +375,7 @@ static int ir_lirc_register(struct rc_dev *dev)
   drv-code_length = sizeof(struct ir_raw_event) * 8;
   drv-fops = lirc_fops;
   drv-dev = dev-dev;
 + drv-rc_dev = dev;
   drv-owner = THIS_MODULE;
  
   drv-minor = lirc_register_driver(drv);
 diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c
 index 8dc057b..485bf7d 100644
 --- a/drivers/media/rc/lirc_dev.c
 +++ b/drivers/media/rc/lirc_dev.c
 @@ -35,6 +35,7 @@
  #include linux/device.h
  #include linux/cdev.h
  
 +#include media/rc-core.h
  #include media/lirc.h
  #include media/lirc_dev.h
  
 @@ -437,6 +438,7 @@ EXPORT_SYMBOL(lirc_unregister_driver);
  int lirc_dev_fop_open(struct inode *inode, struct file *file)
  {
   struct irctl *ir;
 + struct rc_dev *rc_dev;
   struct cdev *cdev;
   int retval = 0;
  
 @@ -467,6 +469,13 @@ int lirc_dev_fop_open(struct inode *inode, struct file 
 *file)
   goto error;
   }
  
 + rc_dev = ir-d.rc_dev;
 + if (rc_dev  rc_dev-open) {
 + retval = rc_dev-open(rc_dev);
 + if (retval)
 + goto error;
 + }
 +

Now the rc device can have its open called twice; once via the input 
system and then (while it is already opened) via lirc. The rc drivers do
not expect this.

   cdev = ir-cdev;
   if (try_module_get(cdev-owner)) {
   ir-open++;
 @@ -499,6 +508,7 @@ int lirc_dev_fop_close(struct inode *inode, struct file 
 *file)
  {
   struct irctl *ir = irctls[iminor(inode)];
   struct cdev *cdev;
 + struct rc_dev *rc_dev;
  
   if (!ir) {
   printk(KERN_ERR %s: called with invalid irctl\n, __func__);
 @@ -511,6 +521,10 @@ int lirc_dev_fop_close(struct inode *inode, struct file 
 *file)
  
   WARN_ON(mutex_lock_killable(lirc_dev_lock));
  
 + rc_dev = ir-d.rc_dev;
 + if (rc_dev  rc_dev-close)
 + rc_dev-close(rc_dev);
 +

iguanair, nuvoton and ene_ir will disable the ir receiver when their close
function is called. If the device was also opened via the input interface,
the input interface will receive no new ir activity.

I think there should be some sort of (atomic) use counter so that the 
rc device open or close only gets called once, whether opened via the 
input interface or via lirc. 

   ir-open--;
   if (ir-attached) {
   ir-d.set_use_dec(ir-d.data);
 diff --git a/include/media/lirc_dev.h b/include/media/lirc_dev.h
 index 168dd0b..96dccb6 100644
 --- a/include/media/lirc_dev.h
 +++ b/include/media/lirc_dev.h
 @@ -139,6 +139,7 @@ struct lirc_driver {
   struct lirc_buffer *rbuf;
   int (*set_use_inc) (void *data);
   void (*set_use_dec) (void *data);
 + struct rc_dev *rc_dev;
   const struct file_operations *fops;
   struct device *dev;
   struct module *owner;
 -- 
 1.7.6.5
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe 

Re: [omap3isp] xclk deadlock

2013-07-12 Thread Jakub Piotr Cłapa

Hi Laurent,

On 05.07.13 12:48, Laurent Pinchart wrote:

Thanks for the explanation. It would be great if you could update your
board/beagle/mt9p031 branch and include the discussed changes.


Done. Could you please test it ?


Thanks for you help. There are no errors about the clocks or regulators 
now but the rest does not work so well (everything mentioned below works 
fine on my old 3.2.24 kernel):


1. The images streamed to omapdss using omap3-isp-live look like they 
lost synchronization with a black bar horizontal bar jumping on the 
screen and other such artifacts (it looks as if both width and height
were invalid). The framerate is about a half of what it should be. 
Adjusting the camera iris changes the lightness of the image so the 
whole pipeline is working to some extent (so these artifacts are not 
just some random memory patterns).


The Register dumps are a little different between 3.2.24 and 3.10 [4].

2. When exiting from live the kernel hangs more often then not 
(sometimes it is accompanied by Unhandled fault: external abort on 
non-linefetch in dispc_write_irqenable in omapdss).


3. After setting up a simple pipeline using media-ctl[2] I get CCDC 
won't become idle errors. If I do this after running live I also get 
(unless it hangs) the CCDC Register dump [1]. Otherwise I only get the 
stream of kernel log messages without anything else from omap3isp.


4. I recreated the live pipeline (judging by the lack of differences 
in media-ctl -p output [3]) and used yavta. I get the same hangs but 
when I don't I can check the UYVY frames one by one. They look bad at 
any stride (I dropped the UV components and tried to get some meaningful 
output in the GIMP raw image data import dialog by adjustung the width).





[1]:
[  153.774017] omap3isp omap3isp: -CCDC Register 
dump-

[  153.781494] omap3isp omap3isp: ###CCDC PCR=0x
[  153.786773] omap3isp omap3isp: ###CCDC SYN_MODE=0x00030400
[  153.792572] omap3isp omap3isp: ###CCDC HD_VD_WID=0x
[  153.798431] omap3isp omap3isp: ###CCDC PIX_LINES=0x
[  153.804290] omap3isp omap3isp: ###CCDC HORZ_INFO=0x031f
[  153.810180] omap3isp omap3isp: ###CCDC VERT_START=0x
[  153.816101] omap3isp omap3isp: ###CCDC VERT_LINES=0x0257
[  153.822052] omap3isp omap3isp: ###CCDC CULLING=0x00ff
[  153.827728] omap3isp omap3isp: ###CCDC HSIZE_OFF=0x0640
[  153.833648] omap3isp omap3isp: ###CCDC SDOFST=0x
[  153.839263] omap3isp omap3isp: ###CCDC SDR_ADDR=0x1000
[  153.845001] omap3isp omap3isp: ###CCDC CLAMP=0x0010
[  153.850524] omap3isp omap3isp: ###CCDC DCSUB=0x
[  153.855987] omap3isp omap3isp: ###CCDC COLPTN=0xbb11bb11
[  153.861602] omap3isp omap3isp: ###CCDC BLKCMP=0x
[  153.867156] omap3isp omap3isp: ###CCDC FPC=0x
[  153.872497] omap3isp omap3isp: ###CCDC FPC_ADDR=0x
[  153.878265] omap3isp omap3isp: ###CCDC VDINT=0x02560190
[  153.883789] omap3isp omap3isp: ###CCDC ALAW=0x0004
[  153.889221] omap3isp omap3isp: ###CCDC REC656IF=0x
[  153.894958] omap3isp omap3isp: ###CCDC CFG=0x8000
[  153.900299] omap3isp omap3isp: ###CCDC FMTCFG=0xc000
[  153.905853] omap3isp omap3isp: ###CCDC FMT_HORZ=0x0320
[  153.911651] omap3isp omap3isp: ###CCDC FMT_VERT=0x0258
[  153.917388] omap3isp omap3isp: ###CCDC PRGEVEN0=0x
[  153.923187] omap3isp omap3isp: ###CCDC PRGEVEN1=0x
[  153.928955] omap3isp omap3isp: ###CCDC PRGODD0=0x
[  153.934661] omap3isp omap3isp: ###CCDC PRGODD1=0x
[  153.940338] omap3isp omap3isp: ###CCDC VP_OUT=0x04ae3200
[  153.945922] omap3isp omap3isp: ###CCDC LSC_CONFIG=0x6600
[  153.951873] omap3isp omap3isp: ###CCDC LSC_INITIAL=0x
[  153.957916] omap3isp omap3isp: ###CCDC LSC_TABLE_BASE=0x
[  153.964233] omap3isp omap3isp: ###CCDC LSC_TABLE_OFFSET=0x
[  153.970733] omap3isp omap3isp: 


[  154.174468] omap3isp omap3isp: CCDC won't become idle!
[  154.315917] omap3isp omap3isp: CCDC won't become idle!
[  154.340118] omap3isp omap3isp: CCDC won't become idle!
[  154.364349] omap3isp omap3isp: CCDC won't become idle!
[  154.388549] omap3isp omap3isp: CCDC won't become idle!
[  154.412750] omap3isp omap3isp: CCDC won't become idle!
[  154.436950] omap3isp omap3isp: CCDC won't become idle!
[  154.461151] omap3isp omap3isp: CCDC won't become idle!
[  154.485382] omap3isp omap3isp: CCDC won't become idle!




[2]:
media-ctl -r -l 'mt9p031 2-0048:0-OMAP3 ISP CCDC:0[1], OMAP3 ISP 
CCDC:1-OMAP3 ISP CCDC output:0[1]'
media-ctl -v -f 'mt9p031 2-0048:0 [SGRBG12 800x600 (96,72)/2400x1800], 
OMAP3 ISP CCDC:1 [SGRBG8 800x600]'
yavta -f SGRBG12 -s 800x600 -n 8 --skip 4 --capture=5 -F'frame-#.bin' 
$(media-ctl -e OMAP3 ISP CCDC output)





[3]:
Opening media device /dev/media0
Enumerating entities
Found 16 entities
Enumerating pads and links
Media controller API version 0.0.0

Media device information

Help needed: Wrong Maintainer Contact

2013-07-12 Thread Florian Streibelt
Hi,

the maintainer contact for the cx231xx driver is broken - the author of that 
driver is not reachable via the email adress stated in the source file: 
srinivasa.de...@conexant.com

[ host cnxtsmtp1.conexant.com [198.62.9.252]: 550 5.1.1 
srinivasa.de...@conexant.com:  Recipient address rejected: User unknown in 
relay recipient table]

Is this the right place to report this?

/Florian
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


CX23103 Video Grabber seems to be supported by cx231xx driver

2013-07-12 Thread Florian Streibelt
Hi,

the chip CX23103 that is used in various devices sold e.g. in germany works 
with the cx231xx stock driver.

The author of that driver is not reachable via the email adress stated in the 
source file: srinivasa.de...@conexant.com
[ host cnxtsmtp1.conexant.com [198.62.9.252]: 550 5.1.1 
srinivasa.de...@conexant.com:  Recipient address rejected: User unknown in 
relay recipient table]

In drivers/media/video/cx231xx/cx231xx-cards.c the struct usb_device_id 
cx231xx_id_table[] needs these lines added:

   {USB_DEVICE(0x1D19, 0x6109),
   .driver_info = CX231XX_BOARD_PV_XCAPTURE_USB},

While the change is minimal due to the fact that no real technical 
documentation is available on the chip the support was guessed - but worked for 
video.

The videostream can pe played using mplayer tv:///0  - proof: 
http://streibelt.de/blog/2013/06/23/kernel-patch-for-cx23103-video-grabber-linux-support/

However when trying to capture audio using audacity while playing the video 
stream in mplayer my system locked (no message in syslog, complete freeze). 


I posted this one month ago to this list without any reaction so I ask if this 
is the correct way to get that grabber really supported.

I am willing to do any tests neccessary and try out patches.


/Florian
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


cron job: media_tree daily build: WARNINGS

2013-07-12 Thread Hans Verkuil
This message is generated daily by a cron job that builds media_tree for
the kernels and architectures in the list below.

Results of the daily build of media_tree:

date:   Fri Jul 12 19:00:20 CEST 2013
git branch: test
git hash:   1c26190a8d492adadac4711fe5762d46204b18b0
gcc version:i686-linux-gcc (GCC) 4.8.1
sparse version: v0.4.5-rc1
host hardware:  x86_64
host os:3.9-7.slh.1-amd64

linux-git-arm-at91: OK
linux-git-arm-davinci: OK
linux-git-arm-exynos: OK
linux-git-arm-mx: OK
linux-git-arm-omap: OK
linux-git-arm-omap1: OK
linux-git-arm-pxa: OK
linux-git-blackfin: OK
linux-git-i686: OK
linux-git-m32r: OK
linux-git-mips: OK
linux-git-powerpc64: OK
linux-git-sh: OK
linux-git-x86_64: OK
linux-2.6.31.14-i686: WARNINGS
linux-2.6.32.27-i686: WARNINGS
linux-2.6.33.7-i686: WARNINGS
linux-2.6.34.7-i686: WARNINGS
linux-2.6.35.9-i686: WARNINGS
linux-2.6.36.4-i686: WARNINGS
linux-2.6.37.6-i686: WARNINGS
linux-2.6.38.8-i686: WARNINGS
linux-2.6.39.4-i686: WARNINGS
linux-3.0.60-i686: OK
linux-3.10-i686: OK
linux-3.1.10-i686: OK
linux-3.2.37-i686: OK
linux-3.3.8-i686: OK
linux-3.4.27-i686: WARNINGS
linux-3.5.7-i686: WARNINGS
linux-3.6.11-i686: WARNINGS
linux-3.7.4-i686: WARNINGS
linux-3.8-i686: WARNINGS
linux-3.9.2-i686: WARNINGS
linux-2.6.31.14-x86_64: WARNINGS
linux-2.6.32.27-x86_64: WARNINGS
linux-2.6.33.7-x86_64: WARNINGS
linux-2.6.34.7-x86_64: WARNINGS
linux-2.6.35.9-x86_64: WARNINGS
linux-2.6.36.4-x86_64: WARNINGS
linux-2.6.37.6-x86_64: WARNINGS
linux-2.6.38.8-x86_64: WARNINGS
linux-2.6.39.4-x86_64: WARNINGS
linux-3.0.60-x86_64: OK
linux-3.10-x86_64: OK
linux-3.1.10-x86_64: OK
linux-3.2.37-x86_64: OK
linux-3.3.8-x86_64: OK
linux-3.4.27-x86_64: WARNINGS
linux-3.5.7-x86_64: WARNINGS
linux-3.6.11-x86_64: WARNINGS
linux-3.7.4-x86_64: WARNINGS
linux-3.8-x86_64: WARNINGS
linux-3.9.2-x86_64: WARNINGS
apps: WARNINGS
spec-git: OK
sparse version: v0.4.5-rc1
sparse: ERRORS

Detailed results are available here:

http://www.xs4all.nl/~hverkuil/logs/Friday.log

Full logs are available here:

http://www.xs4all.nl/~hverkuil/logs/Friday.tar.bz2

The Media Infrastructure API from this daily build is here:

http://www.xs4all.nl/~hverkuil/spec/media.html
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: dtv-scan-tables tar archive

2013-07-12 Thread Mauro Carvalho Chehab
Em Fri, 12 Jul 2013 11:07:55 +0200
Oliver Schinagl oliver+l...@schinagl.nl escreveu:

 Mauro,
 
 I think the archive is generated incorrectly. Could you take a look and 
 see why? I shamefully admit I still am not sure where you did what to 
 generate these ;)

Basically, I run a script like the one below once a day at the crontab:

#!/bin/bash
LANG=C
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

DIR=/some_temp_location/dtv-scan-tables

DATE=`git log -n1 '--pretty=format:%h %ai' |perl -ne 'print $2-$1 if 
(m/([\da-f]+)\s+(\S+)/)'`

TODAY_TAR=dtv-scan-tables-$DATE.tar
FILE=$TODAY_TAR.bz2
REPO=/the_www_location/downloads/dtv-scan-tables/


run() {
echo $@
$@
if [ $? != 0 ]; then
echo Error $?. Please fix.
exit -1
fi
}

run cd $DIR
run git pull /git/dtv-scan-tables.git/ master

CHANGES=`git log --pretty=oneline -n1`
if [ $CHANGES = `cat .changes` ]; then
echo tarball already updated to the latest changeset.
echo Nothing to do.
exit;
fi

git archive --format tar --prefix /usr/share/dvb/ HEAD $TODAY_TAR
run bzip2 -f $TODAY_TAR

run mv $FILE $REPO
run ln -sf $FILE $REPO/dtv-scan-tables-LATEST.tar.bz2
(cd $REPO; md5sum *.bz2  md5sum)
echo $CHANGES  .changes

 
 Oliver
 
 
  Original Message 
 Subject:  dtv-scan-tables tar archive
 Date: Fri, 12 Jul 2013 10:59:56 +0200
 From: Till Maas opensou...@till.name
 To:   Oliver Schinagl oli...@schinagl.nl
 
 
 
 Hi Oliver,
 
 the tar archives at
 http://linuxtv.org/downloads/dtv-scan-tables/
 are broken.
 xxd dtv-scan-tables-2013-04-12-495e59e.tar | less shows:
 
 | 000: 6769 7420 6172 6368 6976 6520 2d2d 666f  git archive --fo
 | 010: 726d 6174 2074 6172 202d 2d70 7265 6669  rmat tar --prefi
 | 020: 7820 2f75 7372 2f73 6861 7265 2f64 7662  x /usr/share/dvb
 | 030: 2f20 4845 4144 0a70 6178 5f67 6c6f 6261  / HEAD.pax_globa
 | 040: 6c5f 6865 6164 6572      l_header
 
 It seems like the git archive commandline somehow ended in the tarball.
 E.g. the tarball should start with pax_global_header and not with git
 archive.

Thanks for pointing it to me. I fixed the script.

 
 Regards
 Till
 
 
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html


Regards,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] Add initial DVB-T frequencies for Bulgaria

2013-07-12 Thread Oliver Schinagl
From: Vladimir Lalov v.la...@gmail.com


Signed-off-by: Oliver Schinagl oli...@schinagl.nl
---
 dvb-t/bg-Sofia | 16 
 1 file changed, 16 insertions(+)
 create mode 100644 dvb-t/bg-Sofia

diff --git a/dvb-t/bg-Sofia b/dvb-t/bg-Sofia
new file mode 100644
index 000..82cc037
--- /dev/null
+++ b/dvb-t/bg-Sofia
@@ -0,0 +1,16 @@
+#--
+# file automatically generated by w_scan
+# (http://wirbel.htpc-forum.de/w_scan/index2.html)
+#! w_scan 20130331 1 0 TERRESTRIAL BG /w_scan
+#--
+# location and provider: Sofia
+# date (-mm-dd): 2013-05-13
+# provided by (opt): v.la...@gmail.com
+#
+# T[2] [plp_id] [system_id] freq bw fec_hi fec_lo mod tm guard 
hi [# comment]
+#--
+T 49000 8MHz  2/3 NONEQAM64   8k  1/4 NONE  # NURTS Digital
+T 62600 8MHz  2/3 NONEQAM64   8k  1/4 NONE  # NURTS Digital
+T 72200 8MHz  2/3 NONEQAM64   8k  1/4 NONE  # First Digital
+T 81800 8MHz  2/3 NONEQAM16   8k 1/16 NONE  # NURTS
+ 
-- 
1.8.1.5

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [media] cx25821 regression from 3.9: BUG: bad unlock balance detected!

2013-07-12 Thread Sander Eikelenboom

Friday, May 17, 2013, 11:52:17 AM, you wrote:

 On Fri May 17 2013 11:04:50 Sander Eikelenboom wrote:
 
 Friday, May 17, 2013, 10:25:24 AM, you wrote:
 
  On Thu May 16 2013 19:41:42 Sander Eikelenboom wrote:
  Hi Hans / Mauro,
  
  With 3.10.0-rc1 (including the cx25821 changes from Hans), I get the bug 
  below which wasn't present with 3.9.
 
  How do I reproduce this? I've tried to, but I can't make this happen.
 
  Looking at the code I can't see how it could hit this bug anyway.
 
 I'm using motion to grab and process 6 from the video streams of the card 
 i have (card with 8 inputs).
 It seems the cx25821 underwent quite some changes between 3.9 and 3.10.

 It did.

 And in the past there have been some more locking issues around mmap and 
 media devices, although they seem to appear as circular locking dependencies 
 and with different devices.
- http://www.mail-archive.com/linux-media@vger.kernel.org/msg46217.html
- Under kvm: http://www.spinics.net/lists/linux-media/msg63322.html

 Neither of those are related to this issue.

 
 - Perhaps that running in a VM could have to do with it ?
- The driver on 3.9 occasionaly gives this, probably latency related (but 
 continues to work):
  cx25821: cx25821_video_wakeup: 2 buffers handled (should be 1)
 
  Could it be something double unlocking in that path ?
 
 - Is there any extra debugging i could enable that could pinpoint the issue ?

 Try this patch:

 diff --git a/drivers/media/pci/cx25821/cx25821-core.c 
 b/drivers/media/pci/cx25821/cx25821-core.c
 index b762c5b..8f8d0e0 100644
 --- a/drivers/media/pci/cx25821/cx25821-core.c
 +++ b/drivers/media/pci/cx25821/cx25821-core.c
 @@ -1208,7 +1208,6 @@ void cx25821_free_buffer(struct videobuf_queue *q, 
 struct cx25821_buffer *buf)
 struct videobuf_dmabuf *dma = videobuf_to_dma(buf-vb);
  
 BUG_ON(in_interrupt());
 -   videobuf_waiton(q, buf-vb, 0, 0);
 videobuf_dma_unmap(q-dev, dma);
 videobuf_dma_free(dma);
 btcx_riscmem_free(to_pci_dev(q-dev), buf-risc);

 I don't think the waiton is really needed for this driver.

 What really should happen is that videobuf is replaced by videobuf2 in this
 driver, but that's a fair amount of work.

Hi Hans,

After being busy for quite some time, i do have some spare time now.

Since i'm still having trouble with this driver, is there a patch series for a 
similar driver
that was converted to videobuf2 ?
I don't know if it is entirely in my league, but i could give it a try when i 
have a example.

--
Sander


 Regards,

 Hans

 
 
 --
 
 Sander
 
 
 
  Regards,
 
  Hans
 
  
  --
  Sander
  
  
  [   53.004968] =
  [   53.004968] [ BUG: bad unlock balance detected! ]
  [   53.004968] 3.10.0-rc1-20130516-jens+ #1 Not tainted
  [   53.004968] -
  [   53.004968] motion/3328 is trying to release lock (dev-lock) at:
  [   53.004968] [819be5f9] mutex_unlock+0x9/0x10
  [   53.004968] but there are no more locks to release!
  [   53.004968]
  [   53.004968] other info that might help us debug this:
  [   53.004968] 1 lock held by motion/3328:
  [   53.004968]  #0:  (mm-mmap_sem){++}, at: [81156cae] 
  vm_munmap+0x3e/0x70
  [   53.004968]
  [   53.004968] stack backtrace:
  [   53.004968] CPU: 1 PID: 3328 Comm: motion Not tainted 
  3.10.0-rc1-20130516-jens+ #1
  [   53.004968] Hardware name: Xen HVM domU, BIOS 4.3-unstable 05/16/2013
  [   53.004968]  819be5f9 88002ac35c58 819b9029 
  88002ac35c88
  [   53.004968]  810e615e 88002ac35cb8 88002b7c18a8 
  819be5f9
  [   53.004968]   88002ac35d28 810eb17e 
  810e7ba5
  [   53.004968] Call Trace:
  [   53.004968]  [819be5f9] ? mutex_unlock+0x9/0x10
  [   53.004968]  [819b9029] dump_stack+0x19/0x1b
  [   53.004968]  [810e615e] print_unlock_imbalance_bug+0xfe/0x110
  [   53.004968]  [819be5f9] ? mutex_unlock+0x9/0x10
  [   53.004968]  [810eb17e] lock_release_non_nested+0x1ce/0x320
  [   53.004968]  [810e7ba5] ? 
  debug_check_no_locks_freed+0x105/0x1b0
  [   53.353529]  [819be5f9] ? mutex_unlock+0x9/0x10
  [   53.353529]  [810eb3cc] lock_release+0xfc/0x250
  [   53.353529]  [819be4b2] __mutex_unlock_slowpath+0xb2/0x1f0
  [   53.353529]  [819be5f9] mutex_unlock+0x9/0x10
  [   53.353529]  [81711105] videobuf_waiton+0x55/0x230
  [   53.353529]  [8114d052] ? tlb_finish_mmu+0x32/0x50
  [   53.353529]  [81154a46] ? unmap_region+0xc6/0x100
  [   53.353529]  [81172e05] ? kmem_cache_free+0x195/0x230
  [   53.353529]  [8172d3d9] cx25821_free_buffer+0x49/0xa0
  [   53.353529]  [8172f939] cx25821_buffer_release+0x9/0x10
  [   53.353529]  [81712c35] videobuf_vm_close+0xc5/0x160
  [   53.353529]  [81154aa5] remove_vma+0x25/0x60
  [   53.353529]  

[PATCH][dvb-apps] Fix 'scan' utility region 0x14 encoding from BIG5 to UTF-16BE

2013-07-12 Thread Huei-Horng Yo
From: Huei-Horng Yo hiroshi...@gmail.com


Signed-off-by: Huei-Horng Yo hiroshi...@gmail.com
---


scan.patch
Description: Binary data


Re: [PATCH][dvb-apps] Fix 'scan' utility region 0x14 encoding from BIG5 to UTF-16BE

2013-07-12 Thread Huei-Horng Yo

於 西元2013年07月13日 10:44, Huei-Horng Yo 提到:

From: Huei-Horng Yo hiroshi...@gmail.com


Signed-off-by: Huei-Horng Yo hiroshi...@gmail.com
---



Sorry, don't know how to keep tab in GMail and the attachment is encoded 
in MIME form. :(

---
From: Huei-Horng Yo hiroshi...@gmail.com


Signed-off-by: Huei-Horng Yo hiroshi...@gmail.com
---
diff --git a/util/scan/scan.c b/util/scan/scan.c
index 71a20db..98093ee 100644
--- a/util/scan/scan.c
+++ b/util/scan/scan.c
@@ -850,7 +850,7 @@ static void descriptorcpy(char **dest, const 
unsigned char *src, size_t len)

case 0x11:  type = ISO-10646;   break;
case 0x12:  type = ISO-2022-KR; break;
case 0x13:  type = GB2312;  break;
-   case 0x14:  type = BIG5;break;
+   case 0x14:  type = UTF-16BE;break;
case 0x15:  type = ISO-10646/UTF-8; break;
case 0x10: /* ISO8859 */
if ((*(src + 1) != 0) || *(src + 2)  0x0f)

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html