diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-15 18:15:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-15 18:15:03 -0400 |
commit | 37a08b13eba6ce3b42df30b2a5ca3a9845f429ec (patch) | |
tree | 663ceaca23d3ca508994bf9e1e80873a5e091898 | |
parent | bd72f85b9ad6cf41bc771de0cd27d892c41b4396 (diff) | |
parent | b734dd5b5753c88c64bf56d4002d8ade7e88edec (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc/pci: Fix MODPOST warning
powerpc/oprofile: Add ppc750 CL as supported by oprofile
powerpc: warning: allocated section `.data_nosave' not in segment
powerpc/kgdb: Fix build failure caused by "kgdb.c: unused variable 'acc'"
powerpc: Fix hypervisor TLB batching
powerpc/mm: Fix hang accessing top of vmalloc space
powerpc: Fix memory leak in axon_msi.c
powerpc/pmac: Fix issues with sleep on some powerbooks
powerpc64/ftrace: use PACA to retrieve TOC in mod_return_to_handler
powerpc/ftrace: show real return addresses in modules
-rw-r--r-- | arch/powerpc/include/asm/firmware.h | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/cputable.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/kgdb.c | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci-common.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/process.c | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/vmlinux.lds.S | 1 | ||||
-rw-r--r-- | arch/powerpc/mm/slb_low.S | 10 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/axon_msi.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/powermac/low_i2c.c | 7 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/firmware.c | 3 | ||||
-rw-r--r-- | drivers/macintosh/via-pmu.c | 40 |
12 files changed, 51 insertions, 45 deletions
diff --git a/arch/powerpc/include/asm/firmware.h b/arch/powerpc/include/asm/firmware.h index 3a179827528d..20778a405d7a 100644 --- a/arch/powerpc/include/asm/firmware.h +++ b/arch/powerpc/include/asm/firmware.h | |||
@@ -37,7 +37,7 @@ | |||
37 | #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) | 37 | #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) |
38 | #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) | 38 | #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) |
39 | #define FW_FEATURE_LLAN ASM_CONST(0x0000000000010000) | 39 | #define FW_FEATURE_LLAN ASM_CONST(0x0000000000010000) |
40 | #define FW_FEATURE_BULK ASM_CONST(0x0000000000020000) | 40 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000000020000) |
41 | #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) | 41 | #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) |
42 | #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) | 42 | #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) |
43 | #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) | 43 | #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) |
@@ -45,8 +45,7 @@ | |||
45 | #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) | 45 | #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) |
46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) | 46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) |
47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) | 47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) |
48 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000002000000) | 48 | #define FW_FEATURE_CMO ASM_CONST(0x0000000002000000) |
49 | #define FW_FEATURE_CMO ASM_CONST(0x0000000004000000) | ||
50 | 49 | ||
51 | #ifndef __ASSEMBLY__ | 50 | #ifndef __ASSEMBLY__ |
52 | 51 | ||
@@ -58,8 +57,9 @@ enum { | |||
58 | FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT | | 57 | FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT | |
59 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | | 58 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | |
60 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | | 59 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | |
61 | FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE | | 60 | FW_FEATURE_BULK_REMOVE | FW_FEATURE_XDABR | |
62 | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | FW_FEATURE_CMO, | 61 | FW_FEATURE_MULTITCE | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | |
62 | FW_FEATURE_CMO, | ||
63 | FW_FEATURE_PSERIES_ALWAYS = 0, | 63 | FW_FEATURE_PSERIES_ALWAYS = 0, |
64 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | 64 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, |
65 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | 65 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 0b9c9135922e..03c862b6a9c4 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -711,6 +711,8 @@ static struct cpu_spec __initdata cpu_specs[] = { | |||
711 | .cpu_setup = __setup_cpu_750, | 711 | .cpu_setup = __setup_cpu_750, |
712 | .machine_check = machine_check_generic, | 712 | .machine_check = machine_check_generic, |
713 | .platform = "ppc750", | 713 | .platform = "ppc750", |
714 | .oprofile_cpu_type = "ppc/750", | ||
715 | .oprofile_type = PPC_OPROFILE_G4, | ||
714 | }, | 716 | }, |
715 | { /* 745/755 */ | 717 | { /* 745/755 */ |
716 | .pvr_mask = 0xfffff000, | 718 | .pvr_mask = 0xfffff000, |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 900e0eea0099..f9fd54bfcc84 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -1038,8 +1038,7 @@ _GLOBAL(mod_return_to_handler) | |||
1038 | * We are in a module using the module's TOC. | 1038 | * We are in a module using the module's TOC. |
1039 | * Switch to our TOC to run inside the core kernel. | 1039 | * Switch to our TOC to run inside the core kernel. |
1040 | */ | 1040 | */ |
1041 | LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler) | 1041 | ld r2, PACATOC(r13) |
1042 | ld r2, 8(r4) | ||
1043 | 1042 | ||
1044 | bl .ftrace_return_to_handler | 1043 | bl .ftrace_return_to_handler |
1045 | nop | 1044 | nop |
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index fe8f71dd0b3f..641c74bb8e27 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c | |||
@@ -282,12 +282,6 @@ void gdb_regs_to_pt_regs(unsigned long *gdb_regs, struct pt_regs *regs) | |||
282 | { | 282 | { |
283 | unsigned long *ptr = gdb_regs; | 283 | unsigned long *ptr = gdb_regs; |
284 | int reg; | 284 | int reg; |
285 | #ifdef CONFIG_SPE | ||
286 | union { | ||
287 | u32 v32[2]; | ||
288 | u64 v64; | ||
289 | } acc; | ||
290 | #endif | ||
291 | 285 | ||
292 | for (reg = 0; reg < 32; reg++) | 286 | for (reg = 0; reg < 32; reg++) |
293 | UNPACK64(regs->gpr[reg], ptr); | 287 | UNPACK64(regs->gpr[reg], ptr); |
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index bb8209e34931..e8dfdbd9327a 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -1190,7 +1190,7 @@ EXPORT_SYMBOL(pcibios_align_resource); | |||
1190 | * Reparent resource children of pr that conflict with res | 1190 | * Reparent resource children of pr that conflict with res |
1191 | * under res, and make res replace those children. | 1191 | * under res, and make res replace those children. |
1192 | */ | 1192 | */ |
1193 | static int __init reparent_resources(struct resource *parent, | 1193 | static int reparent_resources(struct resource *parent, |
1194 | struct resource *res) | 1194 | struct resource *res) |
1195 | { | 1195 | { |
1196 | struct resource *p, **pp; | 1196 | struct resource *p, **pp; |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 1168c5f440ab..2ec1eaed19ca 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -1016,9 +1016,13 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
1016 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 1016 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
1017 | int curr_frame = current->curr_ret_stack; | 1017 | int curr_frame = current->curr_ret_stack; |
1018 | extern void return_to_handler(void); | 1018 | extern void return_to_handler(void); |
1019 | unsigned long addr = (unsigned long)return_to_handler; | 1019 | unsigned long rth = (unsigned long)return_to_handler; |
1020 | unsigned long mrth = -1; | ||
1020 | #ifdef CONFIG_PPC64 | 1021 | #ifdef CONFIG_PPC64 |
1021 | addr = *(unsigned long*)addr; | 1022 | extern void mod_return_to_handler(void); |
1023 | rth = *(unsigned long *)rth; | ||
1024 | mrth = (unsigned long)mod_return_to_handler; | ||
1025 | mrth = *(unsigned long *)mrth; | ||
1022 | #endif | 1026 | #endif |
1023 | #endif | 1027 | #endif |
1024 | 1028 | ||
@@ -1044,7 +1048,7 @@ void show_stack(struct task_struct *tsk, unsigned long *stack) | |||
1044 | if (!firstframe || ip != lr) { | 1048 | if (!firstframe || ip != lr) { |
1045 | printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip); | 1049 | printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip); |
1046 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 1050 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
1047 | if (ip == addr && curr_frame >= 0) { | 1051 | if ((ip == rth || ip == mrth) && curr_frame >= 0) { |
1048 | printk(" (%pS)", | 1052 | printk(" (%pS)", |
1049 | (void *)current->ret_stack[curr_frame].ret); | 1053 | (void *)current->ret_stack[curr_frame].ret); |
1050 | curr_frame--; | 1054 | curr_frame--; |
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index f56429362a12..27735a7ac12b 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
@@ -236,6 +236,7 @@ SECTIONS | |||
236 | READ_MOSTLY_DATA(L1_CACHE_BYTES) | 236 | READ_MOSTLY_DATA(L1_CACHE_BYTES) |
237 | } | 237 | } |
238 | 238 | ||
239 | . = ALIGN(PAGE_SIZE); | ||
239 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { | 240 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { |
240 | NOSAVE_DATA | 241 | NOSAVE_DATA |
241 | } | 242 | } |
diff --git a/arch/powerpc/mm/slb_low.S b/arch/powerpc/mm/slb_low.S index bc44dc4b5c67..95ce35581696 100644 --- a/arch/powerpc/mm/slb_low.S +++ b/arch/powerpc/mm/slb_low.S | |||
@@ -72,19 +72,17 @@ _GLOBAL(slb_miss_kernel_load_vmemmap) | |||
72 | 1: | 72 | 1: |
73 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ | 73 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ |
74 | 74 | ||
75 | /* vmalloc/ioremap mapping encoding bits, the "li" instructions below | 75 | /* vmalloc mapping gets the encoding from the PACA as the mapping |
76 | * will be patched by the kernel at boot | 76 | * can be demoted from 64K -> 4K dynamically on some machines |
77 | */ | 77 | */ |
78 | BEGIN_FTR_SECTION | ||
79 | /* check whether this is in vmalloc or ioremap space */ | ||
80 | clrldi r11,r10,48 | 78 | clrldi r11,r10,48 |
81 | cmpldi r11,(VMALLOC_SIZE >> 28) - 1 | 79 | cmpldi r11,(VMALLOC_SIZE >> 28) - 1 |
82 | bgt 5f | 80 | bgt 5f |
83 | lhz r11,PACAVMALLOCSLLP(r13) | 81 | lhz r11,PACAVMALLOCSLLP(r13) |
84 | b 6f | 82 | b 6f |
85 | 5: | 83 | 5: |
86 | END_FTR_SECTION_IFCLR(CPU_FTR_CI_LARGE_PAGE) | 84 | /* IO mapping */ |
87 | _GLOBAL(slb_miss_kernel_load_io) | 85 | _GLOBAL(slb_miss_kernel_load_io) |
88 | li r11,0 | 86 | li r11,0 |
89 | 6: | 87 | 6: |
90 | BEGIN_FTR_SECTION | 88 | BEGIN_FTR_SECTION |
diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c index aca5741ddc67..a86c34b3bb84 100644 --- a/arch/powerpc/platforms/cell/axon_msi.c +++ b/arch/powerpc/platforms/cell/axon_msi.c | |||
@@ -365,7 +365,7 @@ static int axon_msi_probe(struct of_device *device, | |||
365 | printk(KERN_ERR | 365 | printk(KERN_ERR |
366 | "axon_msi: couldn't parse dcr properties on %s\n", | 366 | "axon_msi: couldn't parse dcr properties on %s\n", |
367 | dn->full_name); | 367 | dn->full_name); |
368 | goto out; | 368 | goto out_free_msic; |
369 | } | 369 | } |
370 | 370 | ||
371 | msic->dcr_host = dcr_map(dn, dcr_base, dcr_len); | 371 | msic->dcr_host = dcr_map(dn, dcr_base, dcr_len); |
diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c index 21226b74c9b2..414ca9849f23 100644 --- a/arch/powerpc/platforms/powermac/low_i2c.c +++ b/arch/powerpc/platforms/powermac/low_i2c.c | |||
@@ -540,8 +540,11 @@ static struct pmac_i2c_host_kw *__init kw_i2c_host_init(struct device_node *np) | |||
540 | /* Make sure IRQ is disabled */ | 540 | /* Make sure IRQ is disabled */ |
541 | kw_write_reg(reg_ier, 0); | 541 | kw_write_reg(reg_ier, 0); |
542 | 542 | ||
543 | /* Request chip interrupt */ | 543 | /* Request chip interrupt. We set IRQF_TIMER because we don't |
544 | if (request_irq(host->irq, kw_i2c_irq, 0, "keywest i2c", host)) | 544 | * want that interrupt disabled between the 2 passes of driver |
545 | * suspend or we'll have issues running the pfuncs | ||
546 | */ | ||
547 | if (request_irq(host->irq, kw_i2c_irq, IRQF_TIMER, "keywest i2c", host)) | ||
545 | host->irq = NO_IRQ; | 548 | host->irq = NO_IRQ; |
546 | 549 | ||
547 | printk(KERN_INFO "KeyWest i2c @0x%08x irq %d %s\n", | 550 | printk(KERN_INFO "KeyWest i2c @0x%08x irq %d %s\n", |
diff --git a/arch/powerpc/platforms/pseries/firmware.c b/arch/powerpc/platforms/pseries/firmware.c index 5a707da3f5c2..0a14d8cd314f 100644 --- a/arch/powerpc/platforms/pseries/firmware.c +++ b/arch/powerpc/platforms/pseries/firmware.c | |||
@@ -51,11 +51,10 @@ firmware_features_table[FIRMWARE_MAX_FEATURES] = { | |||
51 | {FW_FEATURE_VIO, "hcall-vio"}, | 51 | {FW_FEATURE_VIO, "hcall-vio"}, |
52 | {FW_FEATURE_RDMA, "hcall-rdma"}, | 52 | {FW_FEATURE_RDMA, "hcall-rdma"}, |
53 | {FW_FEATURE_LLAN, "hcall-lLAN"}, | 53 | {FW_FEATURE_LLAN, "hcall-lLAN"}, |
54 | {FW_FEATURE_BULK, "hcall-bulk"}, | 54 | {FW_FEATURE_BULK_REMOVE, "hcall-bulk"}, |
55 | {FW_FEATURE_XDABR, "hcall-xdabr"}, | 55 | {FW_FEATURE_XDABR, "hcall-xdabr"}, |
56 | {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, | 56 | {FW_FEATURE_MULTITCE, "hcall-multi-tce"}, |
57 | {FW_FEATURE_SPLPAR, "hcall-splpar"}, | 57 | {FW_FEATURE_SPLPAR, "hcall-splpar"}, |
58 | {FW_FEATURE_BULK_REMOVE, "hcall-bulk"}, | ||
59 | }; | 58 | }; |
60 | 59 | ||
61 | /* Build up the firmware features bitmask using the contents of | 60 | /* Build up the firmware features bitmask using the contents of |
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index b40fb9b6c862..6f308a4757ee 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c | |||
@@ -405,7 +405,11 @@ static int __init via_pmu_start(void) | |||
405 | printk(KERN_ERR "via-pmu: can't map interrupt\n"); | 405 | printk(KERN_ERR "via-pmu: can't map interrupt\n"); |
406 | return -ENODEV; | 406 | return -ENODEV; |
407 | } | 407 | } |
408 | if (request_irq(irq, via_pmu_interrupt, 0, "VIA-PMU", (void *)0)) { | 408 | /* We set IRQF_TIMER because we don't want the interrupt to be disabled |
409 | * between the 2 passes of driver suspend, we control our own disabling | ||
410 | * for that one | ||
411 | */ | ||
412 | if (request_irq(irq, via_pmu_interrupt, IRQF_TIMER, "VIA-PMU", (void *)0)) { | ||
409 | printk(KERN_ERR "via-pmu: can't request irq %d\n", irq); | 413 | printk(KERN_ERR "via-pmu: can't request irq %d\n", irq); |
410 | return -ENODEV; | 414 | return -ENODEV; |
411 | } | 415 | } |
@@ -419,7 +423,7 @@ static int __init via_pmu_start(void) | |||
419 | gpio_irq = irq_of_parse_and_map(gpio_node, 0); | 423 | gpio_irq = irq_of_parse_and_map(gpio_node, 0); |
420 | 424 | ||
421 | if (gpio_irq != NO_IRQ) { | 425 | if (gpio_irq != NO_IRQ) { |
422 | if (request_irq(gpio_irq, gpio1_interrupt, 0, | 426 | if (request_irq(gpio_irq, gpio1_interrupt, IRQF_TIMER, |
423 | "GPIO1 ADB", (void *)0)) | 427 | "GPIO1 ADB", (void *)0)) |
424 | printk(KERN_ERR "pmu: can't get irq %d" | 428 | printk(KERN_ERR "pmu: can't get irq %d" |
425 | " (GPIO1)\n", gpio_irq); | 429 | " (GPIO1)\n", gpio_irq); |
@@ -925,8 +929,7 @@ proc_write_options(struct file *file, const char __user *buffer, | |||
925 | 929 | ||
926 | #ifdef CONFIG_ADB | 930 | #ifdef CONFIG_ADB |
927 | /* Send an ADB command */ | 931 | /* Send an ADB command */ |
928 | static int | 932 | static int pmu_send_request(struct adb_request *req, int sync) |
929 | pmu_send_request(struct adb_request *req, int sync) | ||
930 | { | 933 | { |
931 | int i, ret; | 934 | int i, ret; |
932 | 935 | ||
@@ -1005,16 +1008,11 @@ pmu_send_request(struct adb_request *req, int sync) | |||
1005 | } | 1008 | } |
1006 | 1009 | ||
1007 | /* Enable/disable autopolling */ | 1010 | /* Enable/disable autopolling */ |
1008 | static int | 1011 | static int __pmu_adb_autopoll(int devs) |
1009 | pmu_adb_autopoll(int devs) | ||
1010 | { | 1012 | { |
1011 | struct adb_request req; | 1013 | struct adb_request req; |
1012 | 1014 | ||
1013 | if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) | ||
1014 | return -ENXIO; | ||
1015 | |||
1016 | if (devs) { | 1015 | if (devs) { |
1017 | adb_dev_map = devs; | ||
1018 | pmu_request(&req, NULL, 5, PMU_ADB_CMD, 0, 0x86, | 1016 | pmu_request(&req, NULL, 5, PMU_ADB_CMD, 0, 0x86, |
1019 | adb_dev_map >> 8, adb_dev_map); | 1017 | adb_dev_map >> 8, adb_dev_map); |
1020 | pmu_adb_flags = 2; | 1018 | pmu_adb_flags = 2; |
@@ -1027,9 +1025,17 @@ pmu_adb_autopoll(int devs) | |||
1027 | return 0; | 1025 | return 0; |
1028 | } | 1026 | } |
1029 | 1027 | ||
1028 | static int pmu_adb_autopoll(int devs) | ||
1029 | { | ||
1030 | if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) | ||
1031 | return -ENXIO; | ||
1032 | |||
1033 | adb_dev_map = devs; | ||
1034 | return __pmu_adb_autopoll(devs); | ||
1035 | } | ||
1036 | |||
1030 | /* Reset the ADB bus */ | 1037 | /* Reset the ADB bus */ |
1031 | static int | 1038 | static int pmu_adb_reset_bus(void) |
1032 | pmu_adb_reset_bus(void) | ||
1033 | { | 1039 | { |
1034 | struct adb_request req; | 1040 | struct adb_request req; |
1035 | int save_autopoll = adb_dev_map; | 1041 | int save_autopoll = adb_dev_map; |
@@ -1038,13 +1044,13 @@ pmu_adb_reset_bus(void) | |||
1038 | return -ENXIO; | 1044 | return -ENXIO; |
1039 | 1045 | ||
1040 | /* anyone got a better idea?? */ | 1046 | /* anyone got a better idea?? */ |
1041 | pmu_adb_autopoll(0); | 1047 | __pmu_adb_autopoll(0); |
1042 | 1048 | ||
1043 | req.nbytes = 5; | 1049 | req.nbytes = 4; |
1044 | req.done = NULL; | 1050 | req.done = NULL; |
1045 | req.data[0] = PMU_ADB_CMD; | 1051 | req.data[0] = PMU_ADB_CMD; |
1046 | req.data[1] = 0; | 1052 | req.data[1] = ADB_BUSRESET; |
1047 | req.data[2] = ADB_BUSRESET; | 1053 | req.data[2] = 0; |
1048 | req.data[3] = 0; | 1054 | req.data[3] = 0; |
1049 | req.data[4] = 0; | 1055 | req.data[4] = 0; |
1050 | req.reply_len = 0; | 1056 | req.reply_len = 0; |
@@ -1056,7 +1062,7 @@ pmu_adb_reset_bus(void) | |||
1056 | pmu_wait_complete(&req); | 1062 | pmu_wait_complete(&req); |
1057 | 1063 | ||
1058 | if (save_autopoll != 0) | 1064 | if (save_autopoll != 0) |
1059 | pmu_adb_autopoll(save_autopoll); | 1065 | __pmu_adb_autopoll(save_autopoll); |
1060 | 1066 | ||
1061 | return 0; | 1067 | return 0; |
1062 | } | 1068 | } |