Re: [PULL] http://linuxtv.org/hg/~awalls/v4l-dvb-misc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andy Walls wrote:
>> The better is to rely on input_dev stuff, since they can easily be used by ir-core
>> sysfs to provide device naming for loading keytables from userspace during udev
>> handling.
> 
> OK, I don't see struct input_dev providing any storage for name and phys
> strings.  From vanilla-2.6.31-rc8/include/linux/input.h:
> 
> 	struct input_dev {
>         	const char *name;
> 	        const char *phys;
> 	[...]
> 
> 
> and vanilla-2.6.31-rc8/drivers/input/input.c:input_register_device()
> doesn't do any allocation.  In fact it spits out useless default strings
> like "Unspecified device" if input_dev->name is NULL.
> 
> Also vanilla-2.6.31-rc8/drivers/input/input.c:input_devices_seq_show(),
> doesn't print any useful information if they are not set:
> 
> 	seq_printf(seq, "N: Name=\"%s\"\n", dev->name ? dev->name : "");
> 	seq_printf(seq, "P: Phys=%s\n", dev->phys ? dev->phys : "");
> 
> So I don't see where the input layer is providing anything: storage
> space nor automatic string generation.
> 
That's true, but the drivers should be dynamically allocating the memory:
	ir->phys = kasprintf(GFP_KERNEL, "pci-%s/ir0", pci_name(pci));
		or
	ir->phys = kasprintf(GFP_KERNEL, "usb-%s-%s", dev->bus->bus_name,
                          dev->devpath);

For the IR name, probably this would be enough:
	ir->name = dev->name;

That's said, I agree that the better is to provide automatic string generation
at the ir-core, for both PCI and USB cases.

Of course, those names should be freed when unregistering the device.

> 
> Some of the V4L drivers use struct card_ir from
> linux/include/media/ir-common.h:
> 
> 	struct card_ir {
>         	struct input_dev        *dev;
> 	        struct ir_input_state   ir;
> 	        char                    name[32];
>         	char                    phys[32];
> 	[...]

Yes, i know. Legacy code. We should really remove name/phys from there
and use the pointers at input.h. As input layer changed, we should have
better patched the IR drivers to not duplicate data.

> which has string storage that is too small for the card names in
> cx23885-cards.c and also has a group of fields that don't make a lot of
> sense for the RC-5 and NEC decoding state machines I've implemented.
> 
> In fact linux/drivers/media/video/cx88/cx88-input.c uses it's own struct
> cx88_IR instead of card_IR:
> 
> 	struct cx88_IR {
> 	        struct cx88_core *core;
> 	        struct input_dev *input;
> 	        struct ir_input_state ir;
> 	        char name[32];
> 	        char phys[32];
> 	[...]
> 
> 
> So what is it you want me to do with this change?  I don't know what
> storage space for strings you want me to reuse. 
> 
> Regards,
> Andy
> 
>> Cheers,
>> Mauro.
>>
> 

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

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux