Commit graph

37 commits

Author SHA1 Message Date
Mauro Carvalho Chehab
715a223323 V4L/DVB (12595): common/ir: use a struct for keycode tables
Currently, V4L uses a scancode table whose index is the scancode and
the value is the keycode. While this works, it has some drawbacks:

1) It requires that the scancode to be at the range 00-7f;

2) keycodes should be masked on 7 bits in order for it to work;

3) due to the 7 bits approach, sometimes it is not possible to replace
the default keyboard to another one with a different encoding rule;

4) it is different than what is done with dvb-usb approach;

5) it requires a typedef for it to work. This is not a recommended
Linux CodingStyle.

This patch is part of a larger series of IR changes. It basically
replaces the IR_KEYTAB_TYPE tables by a structured table:
struct ir_scancode {
       u16     scancode;
       u32     keycode;
};

This is very close to what dvb does. So, a further integration with DVB
code will be easy.

While we've changed the tables, for now, the IR keycode handling is still
based on the old approach.

The only notable effect is the redution of about 35% of the ir-common
module size:

   text    data     bss     dec     hex filename
   6721   29208       4   35933    8c5d old/ir-common.ko
   5756   18040       4   23800    5cf8 new/ir-common.ko

In thesis, we could be using above u8 for scancode, reducing even more the size
of the module, but defining it as u16 is more convenient, since, on dvb, each
scancode has up to 16 bits, and we currently have a few troubles with rc5, as their
scancodes are defined with more than 8 bits.

This patch itself shouldn't be doing any functional changes.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:19:47 -03:00
Mauro Carvalho Chehab
8ccd4cd07e V4L/DVB (12470): cx231xx/cx231xx-conf-reg.h: fix bad whitespaces
It were using 7 spaces instead of tab for indent.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:19:01 -03:00
Jean Delvare
e81516c58e V4L/DVB (12343): Stop defining I2C adapter IDs nobody uses
There is no point in defining I2C adapter IDs when no code is using
them. As this field might go away in the future, stop using it when
we don't need to.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:18:13 -03:00
Joe Perches
1ebcad7707 V4L/DVB (12197): Remove unnecessary semicolons
Cc: Patrick Boettcher <patrick.boettcher@desy.de>
Cc: Steven Toth <stoth@linuxtv.org>
Cc: Igor M. Liplianin <liplianin@netup.ru>
Cc: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-09-12 12:17:23 -03:00
Trent Piepho
1ca27379f3 V4L/DVB (11913): cx231xx: TRY_FMT should not actually set anything
In the TRY_FMT handler the function get_scale() is called to find what the
scaler hardware will produce for a requested size.

The problem is that get_scale(struct cx231xx *dev, ..., unsigned int *vscale,
unsigned int *hscale) saves the calculated scale values into both the
pointer arguments and into dev's hscale and vscale fields.  TRY_FMT shouldn't
actually change anything in the device state.

The code to in get_scale() that writes to dev->[hv]scale can just be
deleted.  In all cases when dev's fields should be modified, get_scale()
was called with get_scale(dev, ..., &dev->hscale, &dev->vscale), so dev was
getting updated anyway.

This didn't actually cause a problem because nothing ever actually made use
of the hscale and vscale fields.  I changed cx231xx_resolution_set() to use
those fields rather than re-calculate them with a call to get_scale().

Updating [hv]scale in cx231xx_resolution_set() isn't necessary because
every call of cx231xx_resolution_set() was already preceded by a call to
get_scale() or setting the [hv]scale fields, so they will be always be
up-to-date w.r.t. width and height.

Removing the call to get_scale() from cx231xx_resolution_set() allowed
making get_scale() a static function, which is a good thing for something
with such a short name.  There is already another function with the same
name in the em28xx driver, but that one is static.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-23 03:21:20 -03:00
Trent Piepho
9bd0e8d7d1 V4L/DVB (11911): cx231xx: Use v4l bounding/alignment function
The v4l function has a better algorithm for aligning image size.

Cc: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-23 03:21:19 -03:00
Hans Verkuil
aad40d3d0c V4L/DVB (12112): cx231xx: fix uninitialized variable.
The variable 'rc' could be used uninitialized in the cx231xx_capture_start
function. Sri informed me that it should be initialized to -1.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-23 03:14:52 -03:00
Jean Delvare
4d7a2d6721 V4L/DVB (11845): ir-kbd-i2c: Use initialization data
For specific boards, pass initialization data to ir-kbd-i2c instead
of modifying the settings after the device is initialized. This is
more efficient and easier to read.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-16 18:21:11 -03:00
Jean Delvare
c668f32dca V4L/DVB (11844): ir-kbd-i2c: Switch to the new-style device binding model
Let card drivers probe for IR receiver devices and instantiate them if
found. Ultimately it would be better if we could stop probing
completely, but I suspect this won't be possible for all card types.

There's certainly room for cleanups. For example, some drivers are
sharing I2C adapter IDs, so they also had to share the list of I2C
addresses being probed for an IR receiver. Now that each driver
explicitly says which addresses should be probed, maybe some addresses
can be dropped from some drivers.

Also, the special cases in saa7134-i2c should probably be handled on a
per-board basis. This would be more efficient and less risky than always
probing extra addresses on all boards. I'll give it a try later.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-16 18:21:11 -03:00
Jean Delvare
1df8e9861c V4L/DVB (11843): ir-kbd-i2c: Don't use i2c_client.name for our own needs
In the standard device driver binding model, the name field of
struct i2c_client is used to match devices to their drivers, so we
must stop using it for internal purposes. Define a separate field
in struct IR_i2c as a replacement, and use it.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-16 18:21:11 -03:00
Huang Weiyi
9d6e1aa55c V4L/DVB: cx231xx: remove unused #include <linux/version.h>'s
Remove unused #include <linux/version.h>'s in
  drivers/media/video/cx231xx/cx231xx-avcore.c
  drivers/media/video/cx231xx/cx231xx-vbi.c

Signed-off-by: Huang Weiyi <weiyi.huang@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-06-16 18:20:36 -03:00
Mauro Carvalho Chehab
3964b58a25 V4L/DVB (11494a): cx231xx Kconfig fixes
selecting ALSA module breaks if !SND. Just remove select.

While here, let's fix the whitespacing at the Kconfig.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-29 15:41:11 -03:00
Mauro Carvalho Chehab
a938b8c5be cx231xx: Convert to snd_card_create()
Convert from snd_card_new() to the new snd_card_create() function.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:53 -03:00
Hans Verkuil
5325b4272a V4L/DVB (11380): v4l2-subdev: change s_routing prototype
It is no longer needed to use a struct pointer as argument, since v4l2_subdev
doesn't require that ioctl-like approach anymore. Instead just pass the input,
output and config (new!) arguments directly.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:27 -03:00
Hans Verkuil
e6574f2fbe V4L/DVB (11373): v4l2-common: add explicit v4l2_device pointer as first arg to new_(probed)_subdev
The functions v4l2_i2c_new_subdev and v4l2_i2c_new_probed_subdev relied on
i2c_get_adapdata to return the v4l2_device. However, this is not always
possible on embedded platforms. So modify the API to pass the v4l2_device
pointer explicitly.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:24 -03:00
Hans Verkuil
f41737ece4 V4L/DVB (11370): v4l2-subdev: move s_std from tuner to core.
s_std didn't belong in the tuner ops. Stricly speaking it should be part of
the video ops, but it is used by audio and tuner devices as well, so it is
more efficient to make it part of the core ops.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:22 -03:00
Hans Verkuil
cc26b076cf V4L/DVB (11369): v4l2-subdev: add load_fw and use that instead of abusing core->init.
The init callback was used in several places to load firmware. Make a separate
load_fw callback for that. This makes the code a lot more understandable.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:21 -03:00
Hans Verkuil
7c9fc9d50f V4L/DVB (11368): v4l2-subdev: move s_standby from core to tuner.
s_standby is only used to put the tuner in powersaving mode, so move it
from core to tuner.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:20 -03:00
Janne Grunau
6e7f7b37e7 V4L/DVB (11353): cx231xx: remove explicitly set v4l2_device.name
Signed-off-by: Janne Grunau <j@jannau.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:12 -03:00
Janne Grunau
7231748af6 V4L/DVB (11352): cx231xx: use usb_interface.dev for v4l2_device_register
Signed-off-by: Janne Grunau <j@jannau.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:12 -03:00
Mauro Carvalho Chehab
5fb1b25679 V4L/DVB (11250): cx231xx: Fix Kconfig help items
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:11 -03:00
Mauro Carvalho Chehab
2c6beca875 V4L/DVB (11135): cx231xx: use usb_make_path() for bus_info
VIDIOC_QUERYCAP should return the proper bus info. In the case of USB, this
should be generated by usb_make_path(), being something like:
	usb-0000:00:1d.7-2

Cc: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:10 -03:00
Mauro Carvalho Chehab
4be1ad3668 V4L/DVB (11134): cx231xx: dmesg cleanup
Remove some printk's that were needed only during development phase. Also,
cleans the printed messages to produce a nicer result.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:10 -03:00
Mauro Carvalho Chehab
38350ba954 V4L/DVB (11133): cx231xx: don't print pcb config debug messages by default
Cc: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:09 -03:00
Mauro Carvalho Chehab
90960744a1 V4L/DVB (11132): cx231xx: usb probe cleanups
Simplifies the usb probe logic, cleaning the printed messages during the probing
phase.

Cc: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:09 -03:00
Mauro Carvalho Chehab
b905de30e3 V4L/DVB (11131): cx231xx: avoid trying to access unfilled dev struct
cx231xxinfo needs dev->name. However, this is not declared on the time the
check for the max number of supported devices is done.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:08 -03:00
Mauro Carvalho Chehab
92fcbd3f4e V4L/DVB (11130): cx231xx: fix an inverted logic at vidioc_streamoff
Cc: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:07 -03:00
Sri Deevi
ecc67d108d V4L/DVB (11129): cx231xx: Use generic names for each device block
Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:07 -03:00
Sri Deevi
b1196126b0 V4L/DVB (11128): cx231xx: convert the calls to subdev format
This patch converts cx231xx to the new v4l2 dev/subdev, doing:
 - Conversion of i2c calls to subdev calls;
 - all subdev calls to call_all();
 - Corrected the header file order in cx231xx.h;
 - Added tuner frequency setting.

Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Reviewed-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:06 -03:00
Sri Deevi
ed559edf35 V4L/DVB (11038): Fix the issue with audio module & correction of Names
The audio module requested in driver differs with module
created by Makefile. Makefile is corrected to create the same module name
required by driver. Also, corrected the strings that shows wrong name.

Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:06 -03:00
Hans Verkuil
d73abcff75 V4L/DVB (10982): cx231xx: fix compile warning
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:05 -03:00
Sri Deevi
6e4f574ba4 V4L/DVB (10958): cx231xx: some additional CodingStyle and minor fixes
changed the pcb-config.c/h to pcb-cfg.c/h for short names.

Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:04 -03:00
Sri Deevi
b925517645 V4L/DVB (10957): cx231xx: Fix CodingStyle
Fixes several CodingStyle issues on the driver.

Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:03 -03:00
Mauro Carvalho Chehab
818fdf3413 V4L/DVB (10957a): cx231xx: Fix compilation breakage
Only cx231xx-video needs linux/version.h, due to KERNEL_VERSION macro,
that is used by V4L2 API.

This patch moves the KERNEL_VERSION to its proper place and starts with
0,0,1.

There are still much more to be fixed on later patches

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:03 -03:00
Mauro Carvalho Chehab
cde4362f02 V4L/DVB (10956): cx231xx: First series of manual CodingStyle fixes
This patch cleans up CodingStyle on the following source files:

There are still much more to be fixed on later patches

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:02 -03:00
Mauro Carvalho Chehab
84b5dbf39e V4L/DVB (10955): cx231xx: CodingStyle automatic fixes with Lindent
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:01 -03:00
Sri Deevi
e0d3bafd02 V4L/DVB (10954): Add cx231xx USB driver
Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com>
[mchehab@redhat.com: Remove the Kconfig changes, to avoid git breakages]
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2009-04-06 21:44:01 -03:00