diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-03 14:58:17 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-04-03 14:58:17 -0700 |
commit | 158d7a505ae2253c37c0ffd4a9460cbcf7ef612f (patch) | |
tree | 7604300ac7ca83f25d688a4524798a7e0695ffb5 /i2c | |
parent | bce1161ba72b04543393dc6f0faeb789da9a2eec (diff) | |
download | patches-158d7a505ae2253c37c0ffd4a9460cbcf7ef612f.tar.gz |
2.6.17-rc1 refresh
Diffstat (limited to 'i2c')
-rw-r--r-- | i2c/w1-replace-dscore-and-ds_w1_bridge-with-ds2490-driver.patch | 19 | ||||
-rw-r--r-- | i2c/w1-userspace-communication-protocol-over-connector.patch | 84 |
2 files changed, 47 insertions, 56 deletions
diff --git a/i2c/w1-replace-dscore-and-ds_w1_bridge-with-ds2490-driver.patch b/i2c/w1-replace-dscore-and-ds_w1_bridge-with-ds2490-driver.patch index ba266a9aa2205..7d86442cbbc69 100644 --- a/i2c/w1-replace-dscore-and-ds_w1_bridge-with-ds2490-driver.patch +++ b/i2c/w1-replace-dscore-and-ds_w1_bridge-with-ds2490-driver.patch @@ -9,13 +9,13 @@ From: Evgeniy Polyakov <johnpol@2ka.mipt.ru> --- Documentation/w1/masters/ds2490 | 18 - drivers/w1/masters/Kconfig | 27 - + drivers/w1/masters/Kconfig | 25 - drivers/w1/masters/Makefile | 7 drivers/w1/masters/ds2490.c | 947 ++++++++++++++++++++++++++++++++++++++ drivers/w1/masters/ds_w1_bridge.c | 174 ------ drivers/w1/masters/dscore.c | 795 ------------------------------- drivers/w1/masters/dscore.h | 166 ------ - 7 files changed, 975 insertions(+), 1159 deletions(-) + 7 files changed, 974 insertions(+), 1158 deletions(-) --- /dev/null +++ gregkh-2.6/Documentation/w1/masters/ds2490 @@ -52,7 +52,13 @@ From: Evgeniy Polyakov <johnpol@2ka.mipt.ru> - - This support is also available as a module. If so, the module - will be called ds9490r.ko. -- ++config W1_MASTER_DS2490 ++ tristate "DS2490 USB <-> W1 transport layer for 1-wire" ++ depends on W1 && USB ++ help ++ Say Y here if you want to have a driver for DS2490 based USB <-> W1 bridges, ++ for example DS9490*. + -config W1_MASTER_DS9490_BRIDGE - tristate "DS9490R USB <-> W1 transport layer for 1-wire" - depends on W1_MASTER_DS9490 @@ -62,13 +68,6 @@ From: Evgeniy Polyakov <johnpol@2ka.mipt.ru> - - This support is also available as a module. If so, the module - will be called ds_w1_bridge.ko. -+config W1_MASTER_DS2490 -+ tristate "DS2490 USB <-> W1 transport layer for 1-wire" -+ depends on W1 && USB -+ help -+ Say Y here if you want to have a driver for DS2490 based USB <-> W1 bridges, -+ for example DS9490*. -+ + This support is also available as a module. If so, the module + will be called ds2490.ko. diff --git a/i2c/w1-userspace-communication-protocol-over-connector.patch b/i2c/w1-userspace-communication-protocol-over-connector.patch index 08afc9518e743..31fb72bf7d5b2 100644 --- a/i2c/w1-userspace-communication-protocol-over-connector.patch +++ b/i2c/w1-userspace-communication-protocol-over-connector.patch @@ -24,14 +24,14 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> drivers/w1/slaves/w1_ds2433.c | 1 drivers/w1/slaves/w1_smem.c | 1 drivers/w1/slaves/w1_therm.c | 1 - drivers/w1/w1.c | 141 ++++++++++++++++++-------- + drivers/w1/w1.c | 137 +++++++++++++++++--------- drivers/w1/w1.h | 38 +++---- drivers/w1/w1_family.h | 1 drivers/w1/w1_int.c | 27 ++--- drivers/w1/w1_io.c | 18 --- drivers/w1/w1_netlink.c | 221 +++++++++++++++++++++++++++++++++++------- drivers/w1/w1_netlink.h | 38 +++++-- - 12 files changed, 450 insertions(+), 137 deletions(-) + 12 files changed, 448 insertions(+), 135 deletions(-) --- /dev/null +++ gregkh-2.6/Documentation/w1/w1.netlink @@ -452,7 +452,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> while (!kthread_should_stop() && !test_bit(W1_MASTER_NEED_EXIT, &dev->flags)) { try_to_freeze(); -@@ -864,28 +924,13 @@ int w1_process(void *data) +@@ -864,22 +924,7 @@ int w1_process(void *data) if (down_interruptible(&dev->mutex)) continue; @@ -472,18 +472,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - - if (dev->search_count > 0) - dev->search_count--; -- + w1_search_process(dev, W1_SEARCH); -+ + up(&dev->mutex); } - - atomic_dec(&dev->refcnt); -- -+ - return 0; - } - @@ -895,6 +940,8 @@ static int w1_init(void) printk(KERN_INFO "Driver for 1-wire Dallas network protocol.\n"); @@ -493,15 +485,15 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> retval = bus_register(&w1_bus_type); if (retval) { printk(KERN_ERR "Failed to register bus. err=%d.\n", retval); -@@ -946,6 +993,8 @@ static void w1_fini(void) - +@@ -947,6 +994,8 @@ static void w1_fini(void) list_for_each_entry(dev, &w1_masters, w1_master_entry) __w1_remove_master_device(dev); -+ -+ w1_fini_netlink(); ++ w1_fini_netlink(); ++ kthread_stop(w1_control_thread); + driver_unregister(&w1_slave_driver); --- gregkh-2.6.orig/drivers/w1/w1.h +++ gregkh-2.6/drivers/w1/w1.h @@ -42,8 +42,6 @@ struct w1_reg_num @@ -746,48 +738,50 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + char buf[sizeof(struct cn_msg) + sizeof(struct w1_netlink_msg)]; + struct cn_msg *m = (struct cn_msg *)buf; + struct w1_netlink_msg *w = (struct w1_netlink_msg *)(m+1); -+ -+ memset(buf, 0, sizeof(buf)); - nlh = NLMSG_PUT(skb, 0, dev->seq++, NLMSG_DONE, size - sizeof(*nlh)); ++ memset(buf, 0, sizeof(buf)); + +- data = (struct w1_netlink_msg *)NLMSG_DATA(nlh); + m->id.idx = CN_W1_IDX; + m->id.val = CN_W1_VAL; -- data = (struct w1_netlink_msg *)NLMSG_DATA(nlh); +- memcpy(data, msg, sizeof(struct w1_netlink_msg)); + m->seq = dev->seq++; + m->len = sizeof(struct w1_netlink_msg); -- memcpy(data, msg, sizeof(struct w1_netlink_msg)); -+ memcpy(w, msg, sizeof(struct w1_netlink_msg)); -+ -+ cn_netlink_send(m, 0, GFP_KERNEL); -+} - - NETLINK_CB(skb).dst_group = dev->groups; - netlink_broadcast(dev->nls, skb, 0, dev->groups, GFP_ATOMIC); -+static int w1_process_command_master(struct w1_master *dev, struct cn_msg *msg, -+ struct w1_netlink_msg *hdr, struct w1_netlink_cmd *cmd) -+{ -+ dev_dbg(&dev->dev, "%s: %s: cmd=%02x, len=%u.\n", -+ __func__, dev->name, cmd->cmd, cmd->len); ++ memcpy(w, msg, sizeof(struct w1_netlink_msg)); -nlmsg_failure: - return; -+ if (cmd->cmd != W1_CMD_SEARCH && cmd->cmd != W1_CMD_ALARM_SEARCH) -+ return -EINVAL; -+ -+ w1_search_process(dev, (cmd->cmd == W1_CMD_ALARM_SEARCH)?W1_ALARM_SEARCH:W1_SEARCH); -+ return 0; ++ cn_netlink_send(m, 0, GFP_KERNEL); } -int dev_init_netlink(struct w1_master *dev) -+static int w1_send_read_reply(struct w1_slave *sl, struct cn_msg *msg, ++static int w1_process_command_master(struct w1_master *dev, struct cn_msg *msg, + struct w1_netlink_msg *hdr, struct w1_netlink_cmd *cmd) { - dev->nls = netlink_kernel_create(NETLINK_W1, 1, NULL, THIS_MODULE); - if (!dev->nls) { - printk(KERN_ERR "Failed to create new netlink socket(%u) for w1 master %s.\n", - NETLINK_W1, dev->dev.bus_id); +- } ++ dev_dbg(&dev->dev, "%s: %s: cmd=%02x, len=%u.\n", ++ __func__, dev->name, cmd->cmd, cmd->len); ++ ++ if (cmd->cmd != W1_CMD_SEARCH && cmd->cmd != W1_CMD_ALARM_SEARCH) ++ return -EINVAL; + ++ w1_search_process(dev, (cmd->cmd == W1_CMD_ALARM_SEARCH)?W1_ALARM_SEARCH:W1_SEARCH); + return 0; + } + +-void dev_fini_netlink(struct w1_master *dev) ++static int w1_send_read_reply(struct w1_slave *sl, struct cn_msg *msg, ++ struct w1_netlink_msg *hdr, struct w1_netlink_cmd *cmd) ++{ + void *data; + struct w1_netlink_msg *h; + struct w1_netlink_cmd *c; @@ -848,12 +842,11 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + default: + err = -1; + break; - } ++ } + + return err; +} - -- return 0; ++ +static void w1_cn_callback(void *data) +{ + struct cn_msg *msg = data; @@ -943,17 +936,16 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +} + +int w1_init_netlink(void) -+{ + { +- if (dev->nls && dev->nls->sk_socket) +- sock_release(dev->nls->sk_socket); + struct cb_id w1_id = {.idx = CN_W1_IDX, .val = CN_W1_VAL}; + + return cn_add_callback(&w1_id, "w1", &w1_cn_callback); - } - --void dev_fini_netlink(struct w1_master *dev) ++} ++ +void w1_fini_netlink(void) - { -- if (dev->nls && dev->nls->sk_socket) -- sock_release(dev->nls->sk_socket); ++{ + struct cb_id w1_id = {.idx = CN_W1_IDX, .val = CN_W1_VAL}; + + cn_del_callback(&w1_id); |