aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m68k/amiga')
-rw-r--r--arch/m68k/amiga/amiints.c46
-rw-r--r--arch/m68k/amiga/amisound.c2
-rw-r--r--arch/m68k/amiga/cia.c8
-rw-r--r--arch/m68k/amiga/config.c18
4 files changed, 38 insertions, 36 deletions
diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c
index d9edf2d1a492..b0aa61bf8700 100644
--- a/arch/m68k/amiga/amiints.c
+++ b/arch/m68k/amiga/amiints.c
@@ -126,9 +126,9 @@ void __init amiga_init_IRQ(void)
126 gayle.inten = GAYLE_IRQ_IDE; 126 gayle.inten = GAYLE_IRQ_IDE;
127 127
128 /* turn off all interrupts and enable the master interrupt bit */ 128 /* turn off all interrupts and enable the master interrupt bit */
129 custom.intena = 0x7fff; 129 amiga_custom.intena = 0x7fff;
130 custom.intreq = 0x7fff; 130 amiga_custom.intreq = 0x7fff;
131 custom.intena = IF_SETCLR | IF_INTEN; 131 amiga_custom.intena = IF_SETCLR | IF_INTEN;
132 132
133 cia_init_IRQ(&ciaa_base); 133 cia_init_IRQ(&ciaa_base);
134 cia_init_IRQ(&ciab_base); 134 cia_init_IRQ(&ciab_base);
@@ -245,7 +245,7 @@ int amiga_request_irq(unsigned int irq,
245 245
246 /* enable the interrupt */ 246 /* enable the interrupt */
247 if (irq < IRQ_AMIGA_PORTS && !ami_ablecount[irq]) 247 if (irq < IRQ_AMIGA_PORTS && !ami_ablecount[irq])
248 custom.intena = IF_SETCLR | amiga_intena_vals[irq]; 248 amiga_custom.intena = IF_SETCLR | amiga_intena_vals[irq];
249 249
250 return error; 250 return error;
251} 251}
@@ -274,7 +274,7 @@ void amiga_free_irq(unsigned int irq, void *dev_id)
274 amiga_delete_irq(&ami_irq_list[irq], dev_id); 274 amiga_delete_irq(&ami_irq_list[irq], dev_id);
275 /* if server list empty, disable the interrupt */ 275 /* if server list empty, disable the interrupt */
276 if (!ami_irq_list[irq] && irq < IRQ_AMIGA_PORTS) 276 if (!ami_irq_list[irq] && irq < IRQ_AMIGA_PORTS)
277 custom.intena = amiga_intena_vals[irq]; 277 amiga_custom.intena = amiga_intena_vals[irq];
278 } else { 278 } else {
279 if (ami_irq_list[irq]->dev_id != dev_id) 279 if (ami_irq_list[irq]->dev_id != dev_id)
280 printk("%s: removing probably wrong IRQ %d from %s\n", 280 printk("%s: removing probably wrong IRQ %d from %s\n",
@@ -283,7 +283,7 @@ void amiga_free_irq(unsigned int irq, void *dev_id)
283 ami_irq_list[irq]->flags = 0; 283 ami_irq_list[irq]->flags = 0;
284 ami_irq_list[irq]->dev_id = NULL; 284 ami_irq_list[irq]->dev_id = NULL;
285 ami_irq_list[irq]->devname = NULL; 285 ami_irq_list[irq]->devname = NULL;
286 custom.intena = amiga_intena_vals[irq]; 286 amiga_custom.intena = amiga_intena_vals[irq];
287 } 287 }
288} 288}
289 289
@@ -327,7 +327,7 @@ void amiga_enable_irq(unsigned int irq)
327 } 327 }
328 328
329 /* enable the interrupt */ 329 /* enable the interrupt */
330 custom.intena = IF_SETCLR | amiga_intena_vals[irq]; 330 amiga_custom.intena = IF_SETCLR | amiga_intena_vals[irq];
331} 331}
332 332
333void amiga_disable_irq(unsigned int irq) 333void amiga_disable_irq(unsigned int irq)
@@ -358,7 +358,7 @@ void amiga_disable_irq(unsigned int irq)
358 } 358 }
359 359
360 /* disable the interrupt */ 360 /* disable the interrupt */
361 custom.intena = amiga_intena_vals[irq]; 361 amiga_custom.intena = amiga_intena_vals[irq];
362} 362}
363 363
364inline void amiga_do_irq(int irq, struct pt_regs *fp) 364inline void amiga_do_irq(int irq, struct pt_regs *fp)
@@ -373,7 +373,7 @@ void amiga_do_irq_list(int irq, struct pt_regs *fp)
373 373
374 kstat_cpu(0).irqs[SYS_IRQS + irq]++; 374 kstat_cpu(0).irqs[SYS_IRQS + irq]++;
375 375
376 custom.intreq = amiga_intena_vals[irq]; 376 amiga_custom.intreq = amiga_intena_vals[irq];
377 377
378 for (node = ami_irq_list[irq]; node; node = node->next) 378 for (node = ami_irq_list[irq]; node; node = node->next)
379 node->handler(irq, node->dev_id, fp); 379 node->handler(irq, node->dev_id, fp);
@@ -385,23 +385,23 @@ void amiga_do_irq_list(int irq, struct pt_regs *fp)
385 385
386static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp) 386static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp)
387{ 387{
388 unsigned short ints = custom.intreqr & custom.intenar; 388 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
389 389
390 /* if serial transmit buffer empty, interrupt */ 390 /* if serial transmit buffer empty, interrupt */
391 if (ints & IF_TBE) { 391 if (ints & IF_TBE) {
392 custom.intreq = IF_TBE; 392 amiga_custom.intreq = IF_TBE;
393 amiga_do_irq(IRQ_AMIGA_TBE, fp); 393 amiga_do_irq(IRQ_AMIGA_TBE, fp);
394 } 394 }
395 395
396 /* if floppy disk transfer complete, interrupt */ 396 /* if floppy disk transfer complete, interrupt */
397 if (ints & IF_DSKBLK) { 397 if (ints & IF_DSKBLK) {
398 custom.intreq = IF_DSKBLK; 398 amiga_custom.intreq = IF_DSKBLK;
399 amiga_do_irq(IRQ_AMIGA_DSKBLK, fp); 399 amiga_do_irq(IRQ_AMIGA_DSKBLK, fp);
400 } 400 }
401 401
402 /* if software interrupt set, interrupt */ 402 /* if software interrupt set, interrupt */
403 if (ints & IF_SOFT) { 403 if (ints & IF_SOFT) {
404 custom.intreq = IF_SOFT; 404 amiga_custom.intreq = IF_SOFT;
405 amiga_do_irq(IRQ_AMIGA_SOFT, fp); 405 amiga_do_irq(IRQ_AMIGA_SOFT, fp);
406 } 406 }
407 return IRQ_HANDLED; 407 return IRQ_HANDLED;
@@ -409,17 +409,17 @@ static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp)
409 409
410static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp) 410static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp)
411{ 411{
412 unsigned short ints = custom.intreqr & custom.intenar; 412 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
413 413
414 /* if a blitter interrupt */ 414 /* if a blitter interrupt */
415 if (ints & IF_BLIT) { 415 if (ints & IF_BLIT) {
416 custom.intreq = IF_BLIT; 416 amiga_custom.intreq = IF_BLIT;
417 amiga_do_irq(IRQ_AMIGA_BLIT, fp); 417 amiga_do_irq(IRQ_AMIGA_BLIT, fp);
418 } 418 }
419 419
420 /* if a copper interrupt */ 420 /* if a copper interrupt */
421 if (ints & IF_COPER) { 421 if (ints & IF_COPER) {
422 custom.intreq = IF_COPER; 422 amiga_custom.intreq = IF_COPER;
423 amiga_do_irq(IRQ_AMIGA_COPPER, fp); 423 amiga_do_irq(IRQ_AMIGA_COPPER, fp);
424 } 424 }
425 425
@@ -431,29 +431,29 @@ static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp)
431 431
432static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp) 432static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp)
433{ 433{
434 unsigned short ints = custom.intreqr & custom.intenar; 434 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
435 435
436 /* if audio 0 interrupt */ 436 /* if audio 0 interrupt */
437 if (ints & IF_AUD0) { 437 if (ints & IF_AUD0) {
438 custom.intreq = IF_AUD0; 438 amiga_custom.intreq = IF_AUD0;
439 amiga_do_irq(IRQ_AMIGA_AUD0, fp); 439 amiga_do_irq(IRQ_AMIGA_AUD0, fp);
440 } 440 }
441 441
442 /* if audio 1 interrupt */ 442 /* if audio 1 interrupt */
443 if (ints & IF_AUD1) { 443 if (ints & IF_AUD1) {
444 custom.intreq = IF_AUD1; 444 amiga_custom.intreq = IF_AUD1;
445 amiga_do_irq(IRQ_AMIGA_AUD1, fp); 445 amiga_do_irq(IRQ_AMIGA_AUD1, fp);
446 } 446 }
447 447
448 /* if audio 2 interrupt */ 448 /* if audio 2 interrupt */
449 if (ints & IF_AUD2) { 449 if (ints & IF_AUD2) {
450 custom.intreq = IF_AUD2; 450 amiga_custom.intreq = IF_AUD2;
451 amiga_do_irq(IRQ_AMIGA_AUD2, fp); 451 amiga_do_irq(IRQ_AMIGA_AUD2, fp);
452 } 452 }
453 453
454 /* if audio 3 interrupt */ 454 /* if audio 3 interrupt */
455 if (ints & IF_AUD3) { 455 if (ints & IF_AUD3) {
456 custom.intreq = IF_AUD3; 456 amiga_custom.intreq = IF_AUD3;
457 amiga_do_irq(IRQ_AMIGA_AUD3, fp); 457 amiga_do_irq(IRQ_AMIGA_AUD3, fp);
458 } 458 }
459 return IRQ_HANDLED; 459 return IRQ_HANDLED;
@@ -461,7 +461,7 @@ static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp)
461 461
462static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp) 462static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp)
463{ 463{
464 unsigned short ints = custom.intreqr & custom.intenar; 464 unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar;
465 465
466 /* if serial receive buffer full interrupt */ 466 /* if serial receive buffer full interrupt */
467 if (ints & IF_RBF) { 467 if (ints & IF_RBF) {
@@ -471,7 +471,7 @@ static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp)
471 471
472 /* if a disk sync interrupt */ 472 /* if a disk sync interrupt */
473 if (ints & IF_DSKSYN) { 473 if (ints & IF_DSKSYN) {
474 custom.intreq = IF_DSKSYN; 474 amiga_custom.intreq = IF_DSKSYN;
475 amiga_do_irq(IRQ_AMIGA_DSKSYN, fp); 475 amiga_do_irq(IRQ_AMIGA_DSKSYN, fp);
476 } 476 }
477 return IRQ_HANDLED; 477 return IRQ_HANDLED;
diff --git a/arch/m68k/amiga/amisound.c b/arch/m68k/amiga/amisound.c
index bd5d134e9f12..ae94db5d93b2 100644
--- a/arch/m68k/amiga/amisound.c
+++ b/arch/m68k/amiga/amisound.c
@@ -24,6 +24,8 @@ static const signed char sine_data[] = {
24}; 24};
25#define DATA_SIZE (sizeof(sine_data)/sizeof(sine_data[0])) 25#define DATA_SIZE (sizeof(sine_data)/sizeof(sine_data[0]))
26 26
27#define custom amiga_custom
28
27 /* 29 /*
28 * The minimum period for audio may be modified by the frame buffer 30 * The minimum period for audio may be modified by the frame buffer
29 * device since it depends on htotal (for OCS/ECS/AGA) 31 * device since it depends on htotal (for OCS/ECS/AGA)
diff --git a/arch/m68k/amiga/cia.c b/arch/m68k/amiga/cia.c
index 7d55682615e3..9476eb9440f5 100644
--- a/arch/m68k/amiga/cia.c
+++ b/arch/m68k/amiga/cia.c
@@ -60,7 +60,7 @@ unsigned char cia_set_irq(struct ciabase *base, unsigned char mask)
60 else 60 else
61 base->icr_data &= ~mask; 61 base->icr_data &= ~mask;
62 if (base->icr_data & base->icr_mask) 62 if (base->icr_data & base->icr_mask)
63 custom.intreq = IF_SETCLR | base->int_mask; 63 amiga_custom.intreq = IF_SETCLR | base->int_mask;
64 return old & base->icr_mask; 64 return old & base->icr_mask;
65} 65}
66 66
@@ -89,7 +89,7 @@ unsigned char cia_able_irq(struct ciabase *base, unsigned char mask)
89 } 89 }
90 } 90 }
91 if (base->icr_data & base->icr_mask) 91 if (base->icr_data & base->icr_mask)
92 custom.intreq = IF_SETCLR | base->int_mask; 92 amiga_custom.intreq = IF_SETCLR | base->int_mask;
93 return old; 93 return old;
94} 94}
95 95
@@ -133,7 +133,7 @@ static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp)
133 mach_irq = base->cia_irq; 133 mach_irq = base->cia_irq;
134 irq = SYS_IRQS + mach_irq; 134 irq = SYS_IRQS + mach_irq;
135 ints = cia_set_irq(base, CIA_ICR_ALL); 135 ints = cia_set_irq(base, CIA_ICR_ALL);
136 custom.intreq = base->int_mask; 136 amiga_custom.intreq = base->int_mask;
137 for (i = 0; i < CIA_IRQS; i++, irq++, mach_irq++) { 137 for (i = 0; i < CIA_IRQS; i++, irq++, mach_irq++) {
138 if (ints & 1) { 138 if (ints & 1) {
139 kstat_cpu(0).irqs[irq]++; 139 kstat_cpu(0).irqs[irq]++;
@@ -162,7 +162,7 @@ void __init cia_init_IRQ(struct ciabase *base)
162 /* install CIA handler */ 162 /* install CIA handler */
163 request_irq(base->handler_irq, cia_handler, 0, base->name, base); 163 request_irq(base->handler_irq, cia_handler, 0, base->name, base);
164 164
165 custom.intena = IF_SETCLR | base->int_mask; 165 amiga_custom.intena = IF_SETCLR | base->int_mask;
166} 166}
167 167
168int cia_get_irq_list(struct ciabase *base, struct seq_file *p) 168int cia_get_irq_list(struct ciabase *base, struct seq_file *p)
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c
index 4775e18a78f0..da24476db8e9 100644
--- a/arch/m68k/amiga/config.c
+++ b/arch/m68k/amiga/config.c
@@ -290,7 +290,7 @@ static void __init amiga_identify(void)
290 case CS_OCS: 290 case CS_OCS:
291 case CS_ECS: 291 case CS_ECS:
292 case CS_AGA: 292 case CS_AGA:
293 switch (custom.deniseid & 0xf) { 293 switch (amiga_custom.deniseid & 0xf) {
294 case 0x0c: 294 case 0x0c:
295 AMIGAHW_SET(DENISE_HR); 295 AMIGAHW_SET(DENISE_HR);
296 break; 296 break;
@@ -303,7 +303,7 @@ static void __init amiga_identify(void)
303 AMIGAHW_SET(DENISE); 303 AMIGAHW_SET(DENISE);
304 break; 304 break;
305 } 305 }
306 switch ((custom.vposr>>8) & 0x7f) { 306 switch ((amiga_custom.vposr>>8) & 0x7f) {
307 case 0x00: 307 case 0x00:
308 AMIGAHW_SET(AGNUS_PAL); 308 AMIGAHW_SET(AGNUS_PAL);
309 break; 309 break;
@@ -447,9 +447,9 @@ void __init config_amiga(void)
447 amiga_colorclock = 5*amiga_eclock; /* 3.5 MHz */ 447 amiga_colorclock = 5*amiga_eclock; /* 3.5 MHz */
448 448
449 /* clear all DMA bits */ 449 /* clear all DMA bits */
450 custom.dmacon = DMAF_ALL; 450 amiga_custom.dmacon = DMAF_ALL;
451 /* ensure that the DMA master bit is set */ 451 /* ensure that the DMA master bit is set */
452 custom.dmacon = DMAF_SETCLR | DMAF_MASTER; 452 amiga_custom.dmacon = DMAF_SETCLR | DMAF_MASTER;
453 453
454 /* don't use Z2 RAM as system memory on Z3 capable machines */ 454 /* don't use Z2 RAM as system memory on Z3 capable machines */
455 if (AMIGAHW_PRESENT(ZORRO3)) { 455 if (AMIGAHW_PRESENT(ZORRO3)) {
@@ -830,8 +830,8 @@ static void amiga_savekmsg_init(void)
830 830
831static void amiga_serial_putc(char c) 831static void amiga_serial_putc(char c)
832{ 832{
833 custom.serdat = (unsigned char)c | 0x100; 833 amiga_custom.serdat = (unsigned char)c | 0x100;
834 while (!(custom.serdatr & 0x2000)) 834 while (!(amiga_custom.serdatr & 0x2000))
835 ; 835 ;
836} 836}
837 837
@@ -855,11 +855,11 @@ int amiga_serial_console_wait_key(struct console *co)
855{ 855{
856 int ch; 856 int ch;
857 857
858 while (!(custom.intreqr & IF_RBF)) 858 while (!(amiga_custom.intreqr & IF_RBF))
859 barrier(); 859 barrier();
860 ch = custom.serdatr & 0xff; 860 ch = amiga_custom.serdatr & 0xff;
861 /* clear the interrupt, so that another character can be read */ 861 /* clear the interrupt, so that another character can be read */
862 custom.intreq = IF_RBF; 862 amiga_custom.intreq = IF_RBF;
863 return ch; 863 return ch;
864} 864}
865 865