diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-24 18:39:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-02-24 18:39:54 -0500 |
commit | a792cd12cf07cf77c7d1d41b46b4f8327ecf82d0 (patch) | |
tree | 27acf59615245ac2b990fc45e99ce91775767e41 /drivers/ieee1394/nodemgr.c | |
parent | 4daa0682af15b24e9d66ccde3a5d502682e572d8 (diff) | |
parent | e73bf9f135fe1e5db646e668676d22af3008e0c0 (diff) |
Merge branch 'firedtv-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
* 'firedtv-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
firedtv: dvb_frontend_info for FireDTV S2, fix "frequency limits undefined" error
firedtv: massive refactoring
firedtv: rename files, variables, functions from firesat to firedtv
firedtv: Use DEFINE_SPINLOCK
firedtv: fix registration - adapter number could only be zero
firedtv: use length_field() of PMT as length
firedtv: fix returned struct for ca_info
firedtv: cleanups and minor fixes
ieee1394: remove superfluous assertions
ieee1394: inherit ud vendor_id from node vendor_id
ieee1394: add hpsb_node_read() and hpsb_node_lock()
ieee1394: use correct barrier types between accesses of nodeid and generation
firesat: copyrights, rename to firedtv, API conversions, fix remote control input
firesat: avc resend
firesat: update isochronous interface, add CI support
firesat: add DVB-S support for DVB-S2 devices
firesat: fix DVB-S2 device recognition
DVB: add firesat driver
Diffstat (limited to 'drivers/ieee1394/nodemgr.c')
-rw-r--r-- | drivers/ieee1394/nodemgr.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index 906c5a98d814..53aada5bbe1e 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c | |||
@@ -971,6 +971,9 @@ static struct unit_directory *nodemgr_process_unit_directory | |||
971 | ud->ud_kv = ud_kv; | 971 | ud->ud_kv = ud_kv; |
972 | ud->id = (*id)++; | 972 | ud->id = (*id)++; |
973 | 973 | ||
974 | /* inherit vendor_id from root directory if none exists in unit dir */ | ||
975 | ud->vendor_id = ne->vendor_id; | ||
976 | |||
974 | csr1212_for_each_dir_entry(ne->csr, kv, ud_kv, dentry) { | 977 | csr1212_for_each_dir_entry(ne->csr, kv, ud_kv, dentry) { |
975 | switch (kv->key.id) { | 978 | switch (kv->key.id) { |
976 | case CSR1212_KV_ID_VENDOR: | 979 | case CSR1212_KV_ID_VENDOR: |
@@ -1265,7 +1268,8 @@ static void nodemgr_update_node(struct node_entry *ne, struct csr1212_csr *csr, | |||
1265 | csr1212_destroy_csr(csr); | 1268 | csr1212_destroy_csr(csr); |
1266 | } | 1269 | } |
1267 | 1270 | ||
1268 | /* Mark the node current */ | 1271 | /* Finally, mark the node current */ |
1272 | smp_wmb(); | ||
1269 | ne->generation = generation; | 1273 | ne->generation = generation; |
1270 | 1274 | ||
1271 | if (ne->in_limbo) { | 1275 | if (ne->in_limbo) { |
@@ -1798,7 +1802,7 @@ void hpsb_node_fill_packet(struct node_entry *ne, struct hpsb_packet *packet) | |||
1798 | { | 1802 | { |
1799 | packet->host = ne->host; | 1803 | packet->host = ne->host; |
1800 | packet->generation = ne->generation; | 1804 | packet->generation = ne->generation; |
1801 | barrier(); | 1805 | smp_rmb(); |
1802 | packet->node_id = ne->nodeid; | 1806 | packet->node_id = ne->nodeid; |
1803 | } | 1807 | } |
1804 | 1808 | ||
@@ -1807,7 +1811,7 @@ int hpsb_node_write(struct node_entry *ne, u64 addr, | |||
1807 | { | 1811 | { |
1808 | unsigned int generation = ne->generation; | 1812 | unsigned int generation = ne->generation; |
1809 | 1813 | ||
1810 | barrier(); | 1814 | smp_rmb(); |
1811 | return hpsb_write(ne->host, ne->nodeid, generation, | 1815 | return hpsb_write(ne->host, ne->nodeid, generation, |
1812 | addr, buffer, length); | 1816 | addr, buffer, length); |
1813 | } | 1817 | } |