diff options
author | Trent Piepho <xyzzy@speakeasy.org> | 2007-04-14 15:16:26 -0300 |
---|---|---|
committer | Trent Piepho <xyzzy@speakeasy.org> | 2007-04-14 15:16:26 -0300 |
commit | e54bc97df6d51a83c65d22e20e600459e4d717f9 (patch) | |
tree | 993039a52c2fbcf39c4b99910a6817426b325db1 /linux/drivers/media/video/cs8420.h | |
parent | 76f2329ed08d1515452081209e66a9352842fbb5 (diff) | |
download | mediapointer-dvb-s2-e54bc97df6d51a83c65d22e20e600459e4d717f9.tar.gz mediapointer-dvb-s2-e54bc97df6d51a83c65d22e20e600459e4d717f9.tar.bz2 |
usbvision: store the device database more efficiently
From: Trent Piepho <xyzzy@speakeasy.org>
One bit wide bitfields need to declared unsigned to have the range 0 to
1, or they have the range -1 to 0.
A few techniques to reduce the driver's size by about 1700 bytes on ia32,
probably more on x86-64.
Put the biggest fields first, less padding is necessary that way.
Put fields with a limited range into a smaller type. For example
VideoChannels will fit in 3 bits, and TunerType can use 8 bits.
Vin_Reg1, Vin_Reg2, and Dvi_yuv define values for 8-bit registers, but
they can't just go into an 8-bit field with no changes, since -1 was used
as a flag to indicate a value was not present. So what we do is create a
one-bit flag for each one to indicate if a value is or is not present.
This only takes 9 bits and has the added advantage that when the register
isn't overridden (Vin_Reg[12] never are) it doesn't need to appear in the
structure definition since the default value for the flag will be zero.
Acked-by: Thierry MERLE <thierry.merle@free.fr>
Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Diffstat (limited to 'linux/drivers/media/video/cs8420.h')
0 files changed, 0 insertions, 0 deletions