summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-04-03 05:23:05 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2018-04-03 05:23:05 +0300
commit17e3cd222af1c72a750cd83565bb8dfc7bc12335 (patch)
treed8a2f8fb2d0d348dc354be7cfb8cc9d83b6a5878 /drivers
parentbc16d4052f1ae99996f3475b5a73d29c86e7ba81 (diff)
parentecd685580c8feb9a91c758257a66355a673594d9 (diff)
downloadlinux-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.c89
-rw-r--r--drivers/zorro/zorro.c12
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 */