kernel_optimize_test/drivers
Jean Delvare a89ba0bc02 [PATCH] I2C: Rewrite i2c_probe
i2c_probe was quite complex and slow, so I rewrote it in a more
efficient and hopefully clearer way.

Note that this slightly changes the way the module parameters are
handled. This shouldn't change anything for the most common cases
though.

For one thing, the function now respects the order of the parameters
for address probing. It used to always do lower addresses first. The
new approach gives the user more control.

For another, ignore addresses don't overrule probe addresses anymore.
This could have been restored the way it was at the cost of a few more
lines of code, but I don't think it's worth it. Both lists are given
as module parameters, so a user would be quite silly to specify the
same addresses in both lists. The normal addresses list is the only
one that isn't controlled by a module parameter, thus is the only one
the user may reasonably want to remove an address from.

Another significant change is the fact that i2c_probe() will no more
stop when a detection function returns -ENODEV. Just because a driver
found a chip it doesn't support isn't a valid reason to stop all
probings for this one driver. This closes the long standing lm_sensors
ticket #1807.

  http://www2.lm-sensors.nu/~lm78/readticket.cgi?ticket=1807

I updated the documentation accordingly.

In terms of algorithmic complexity, the new code is way better. If
I is the ignore address count, P the probe address count, N the
normal address count and F the force address count, the old code
was doing 128 * (F + I + P + N) iterations max, while the new code
does F + P + ((I+1) * N) iterations max. For the most common case
where F, I and P are empty, this is down from 128 * N to N.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-09-05 09:14:25 -07:00
..
acorn [PATCH] ARM: switch fd1772.c from sleep_on to wait_event 2005-08-07 14:23:42 +01:00
acpi [PATCH] acpi_shutdown: Only prepare for power off on power_off 2005-08-27 10:11:40 -07:00
atm [ATM]: Fix dereference of uninitialized pointer in zatm 2005-09-02 12:18:03 -07:00
base [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
block Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2005-09-05 00:11:50 -07:00
bluetooth [Bluetooth]: Move packet type into the SKB control buffer 2005-08-29 15:55:13 -07:00
cdrom [PATCH] Make MODULE_DEVICE_TABLE work for vio devices 2005-08-30 13:31:56 +10:00
char Merge master.kernel.org:/home/rmk/linux-2.6-serial 2005-09-05 00:14:47 -07:00
cpufreq Here are two possible cleanups in cpufreq.c: 2005-07-28 09:43:56 -07:00
crypto [CRYPTO] Update IV correctly for Padlock CBC encryption 2005-07-06 13:54:09 -07:00
dio
eisa
fc4 [SCSI] fc4 warning fix 2005-07-30 09:47:53 -05:00
firmware [PATCH] PCDP: if PCDP contains parity information, use it 2005-07-28 08:39:02 -07:00
hwmon [PATCH] hwmon: VID table update 2005-09-05 09:14:24 -07:00
i2c [PATCH] I2C: Rewrite i2c_probe 2005-09-05 09:14:25 -07:00
ide [PATCH] swsusp: prevent disks from spinning down and up 2005-09-05 00:06:16 -07:00
ieee1394 [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
infiniband [PATCH] IB: move include files to include/rdma 2005-08-26 20:37:38 -07:00
input [PATCH] mips: kludge envdev to build for 64-bit MIPS with 32-bit compat 2005-09-05 00:06:08 -07:00
isdn [NET]: Remove explicit initializations of skb->input_dev 2005-08-29 15:33:26 -07:00
macintosh [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
mca
md [CRYPTO]: Use CRYPTO_TFM_REQ_MAY_SLEEP where appropriate 2005-09-01 17:43:25 -07:00
media [PATCH] hwmon: hwmon vs i2c, second round (01/11) 2005-09-05 09:14:18 -07:00
message [PATCH] I2O: added pci_request_regions() before using the controller 2005-08-09 17:59:52 -07:00
mfd [MFD] Add SA11x0 MCP platform device support 2005-08-18 10:10:46 +01:00
misc [ARM] 2866/1: add i.MX set_mctrl / get_mctrl functions 2005-08-31 21:48:47 +01:00
mmc [MMC] support for mmc chip select in wbsd 2005-09-03 16:45:49 +01:00
mtd [PATCH] turn many #if $undefined_string into #ifdef $undefined_string 2005-07-27 16:26:08 -07:00
net Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2005-09-05 00:11:50 -07:00
nubus
oprofile [PATCH] clean up inline static vs static inline 2005-07-27 16:26:20 -07:00
parisc
parport Merge HEAD from master.kernel.org:/home/rmk/linux-2.6-serial.git 2005-08-29 10:34:59 -07:00
pci [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
pcmcia [ARM] 2873/1: PCMCIA soc: Allow access to filesystems on CF at boot time 2005-09-03 19:39:25 +01:00
pnp [PATCH] broken error path in drivers/pnp/card.c 2005-08-18 08:43:59 -07:00
s390 [PATCH] s390: disconnected 3270 console 2005-09-05 00:06:29 -07:00
sbus [SPARC64]: Use drivers/Kconfig 2005-08-30 21:46:19 -07:00
scsi [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
serial Merge master.kernel.org:/home/rmk/linux-2.6-serial 2005-09-05 00:14:47 -07:00
sh
sn
tc
telephony [PATCH] pcmcia: remove references to pcmcia/version.h 2005-07-07 18:24:07 -07:00
usb [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
video [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
w1 [NETLINK]: Add "groups" argument to netlink_kernel_create 2005-08-29 16:01:11 -07:00
zorro
Kconfig [MFD] Add multimedia communication port core support 2005-08-18 10:06:59 +01:00
Makefile [MFD] Add multimedia communication port core support 2005-08-18 10:06:59 +01:00