On Thu, 11 Nov 2010 11:54:30 -0200, Mauro Carvalho Chehab <mche...@infradead.org> wrote: > The bad news is that ir-kbd-i2c also needs the stuff that are inside > ir.props (e. g., the IR configuration logic). I wrote and just sent 2 > patches to the ML with the fix patches, against my media-tree.git, > branch staging/for_v2.6.38. For now, only one field > of props is used, but other fields there are likely needed for the other > places where this driver is used, like the open/close callbacks, > allowed_protocols, etc. > > I don't like the idea of just copying all those config stuff into struct > IR_i2c, and then at struct rc_dev,
Which is the way it is with or without my patch, either a struct ir_dev_props or a subset of the former members of that struct are in IR_i2c, same data. And right now you would need to have a mix between ir_dev_props data and additional ir_dev related data in struct IR_i2c (the rc map name is outside of ir_dev_props). Note that the patch *removes* > 200 lines of code (without any loss of functionality) - and that's because the interface is simplified. Simple is good. > and then at struct input_dev. struct input_dev only gets input_name, input_phys and input_id from struct rc_dev, and I did it that way because I didn't want to remove all that information from all drivers (and fill input_dev with generic information instead). We'll have to readdress that issue once multi-input-devs-per-rc-dev functionality is implemented. > It is too much data duplication for no good reason. And you believe it's an important feature that props used to be a struct and that you could pass a pointer (and take care of initializing rc_map) instead of initializing a couple of members in rc_dev directly? The use of struct ir_dev_props was a truely bizarre interface. For example: setting the props member was optional, and a ir_input_dev struct without a props member lacks a driver_type submember. So all codepaths need to know what the default driver_type is when props is not set. Not to mention the number of oops reports that linux-media has already seen, caused by code which didn't check ->props before dereferencing it. That's of course a bug in code, but it's a bug caused by a non-intuitive interface. The new struct is much more straightforward, and your worries about additional pain caused by not having a struct ir_dev_props did not materialize in any of the changes I did (see for example drivers/media/dvb/dvb-usb/dib0700_devices.c which had similar requirements to struct IR_i2c). > So, I think we should re-think about your patch 6/7. What's your suggestion? > Comments? Unsurprisingly, I disagree on the whole re-think part :) -- David Härdeman -- 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