diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 05:23:05 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-04-03 05:23:05 +0300 |
commit | 17e3cd222af1c72a750cd83565bb8dfc7bc12335 (patch) | |
tree | d8a2f8fb2d0d348dc354be7cfb8cc9d83b6a5878 /drivers | |
parent | bc16d4052f1ae99996f3475b5a73d29c86e7ba81 (diff) | |
parent | ecd685580c8feb9a91c758257a66355a673594d9 (diff) | |
download | linux-17e3cd222af1c72a750cd83565bb8dfc7bc12335.tar.xz |
Merge tag 'm68k-for-v4.17-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
Pull m68k updates from Geert Uytterhoeven:
- Macintosh enhancements and fixes
- Remove useless memory layout printing using hashed pointers
- Add missing Amiga Zorro bus DMA mask
- Small fixes and cleanups
- Defconfig updates
* tag 'm68k-for-v4.17-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
m68k/mac: Remove bogus "FIXME" comment
m68k/mac: Enable RTC for 100-series PowerBooks
m68k/mac: Clean up whitespace and remove redundant parentheses
m68k/defconfig: Update defconfigs for v4.16-rc5
zorro: Set up z->dev.dma_mask for the DMA API
m68k/time: Stop validating rtc_time in .read_time
m68k/mm: Stop printing the virtual memory layout
macintosh/via-pmu68k: Initialize PMU driver with setup_arch and arch_initcall
m68k/mac: Fix apparent race condition in Baboon interrupt dispatch
m68k/mac: Enable PDMA support for PowerBook 190
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/macintosh/via-pmu68k.c | 89 | ||||
-rw-r--r-- | drivers/zorro/zorro.c | 12 |
2 files changed, 73 insertions, 28 deletions
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c index 25465fb91ec9..7d9c4baf8c11 100644 --- a/drivers/macintosh/via-pmu68k.c +++ b/drivers/macintosh/via-pmu68k.c @@ -109,6 +109,7 @@ static int pmu_autopoll(int devs); void pmu_poll(void); static int pmu_reset_bus(void); +static int init_pmu(void); static void pmu_start(void); static void send_byte(int x); static void recv_byte(void); @@ -171,23 +172,76 @@ static s8 pmu_data_len[256][2] = { /*f8*/ {-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}, }; -int pmu_probe(void) +int __init find_via_pmu(void) { - if (macintosh_config->adb_type == MAC_ADB_PB1) { + switch (macintosh_config->adb_type) { + case MAC_ADB_PB1: pmu_kind = PMU_68K_V1; - } else if (macintosh_config->adb_type == MAC_ADB_PB2) { + break; + case MAC_ADB_PB2: pmu_kind = PMU_68K_V2; - } else { + break; + default: + pmu_kind = PMU_UNKNOWN; return -ENODEV; } pmu_state = idle; + if (!init_pmu()) + goto fail_init; + + pr_info("adb: PMU 68K driver v0.5 for Unified ADB\n"); + + return 1; + +fail_init: + pmu_kind = PMU_UNKNOWN; return 0; } -static int -pmu_init(void) +static int pmu_probe(void) +{ + if (pmu_kind == PMU_UNKNOWN) + return -ENODEV; + return 0; +} + +static int pmu_init(void) +{ + if (pmu_kind == PMU_UNKNOWN) + return -ENODEV; + return 0; +} + +static int __init via_pmu_start(void) +{ + if (pmu_kind == PMU_UNKNOWN) + return -ENODEV; + + if (request_irq(IRQ_MAC_ADB_SR, pmu_interrupt, 0, "PMU_SR", + pmu_interrupt)) { + pr_err("%s: can't get SR irq\n", __func__); + return -ENODEV; + } + if (request_irq(IRQ_MAC_ADB_CL, pmu_interrupt, 0, "PMU_CL", + pmu_interrupt)) { + pr_err("%s: can't get CL irq\n", __func__); + free_irq(IRQ_MAC_ADB_SR, pmu_interrupt); + return -ENODEV; + } + + pmu_fully_inited = 1; + + /* Enable backlight */ + pmu_enable_backlight(1); + + return 0; +} + +arch_initcall(via_pmu_start); + +static int __init init_pmu(void) { int timeout; volatile struct adb_request req; @@ -238,28 +292,7 @@ pmu_init(void) bright_req_2.complete = 1; bright_req_3.complete = 1; - if (request_irq(IRQ_MAC_ADB_SR, pmu_interrupt, 0, "pmu-shift", - pmu_interrupt)) { - printk(KERN_ERR "pmu_init: can't get irq %d\n", - IRQ_MAC_ADB_SR); - return -EAGAIN; - } - if (request_irq(IRQ_MAC_ADB_CL, pmu_interrupt, 0, "pmu-clock", - pmu_interrupt)) { - printk(KERN_ERR "pmu_init: can't get irq %d\n", - IRQ_MAC_ADB_CL); - free_irq(IRQ_MAC_ADB_SR, pmu_interrupt); - return -EAGAIN; - } - - pmu_fully_inited = 1; - - /* Enable backlight */ - pmu_enable_backlight(1); - - printk("adb: PMU 68K driver v0.5 for Unified ADB.\n"); - - return 0; + return 1; } int diff --git a/drivers/zorro/zorro.c b/drivers/zorro/zorro.c index cc1b1ac57d61..47728477297e 100644 --- a/drivers/zorro/zorro.c +++ b/drivers/zorro/zorro.c @@ -16,6 +16,7 @@ #include <linux/bitops.h> #include <linux/string.h> #include <linux/platform_device.h> +#include <linux/dma-mapping.h> #include <linux/slab.h> #include <asm/byteorder.h> @@ -185,6 +186,17 @@ static int __init amiga_zorro_probe(struct platform_device *pdev) z->dev.parent = &bus->dev; z->dev.bus = &zorro_bus_type; z->dev.id = i; + switch (z->rom.er_Type & ERT_TYPEMASK) { + case ERT_ZORROIII: + z->dev.coherent_dma_mask = DMA_BIT_MASK(32); + break; + + case ERT_ZORROII: + default: + z->dev.coherent_dma_mask = DMA_BIT_MASK(24); + break; + } + z->dev.dma_mask = &z->dev.coherent_dma_mask; } /* ... then register them */ |