162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci** asm-m68k/amigayle.h -- This header defines the registers of the gayle chip 362306a36Sopenharmony_ci** found on the Amiga 1200 462306a36Sopenharmony_ci** This information was found by disassembling card.resource, 562306a36Sopenharmony_ci** so the definitions may not be 100% correct 662306a36Sopenharmony_ci** anyone has an official doc ? 762306a36Sopenharmony_ci** 862306a36Sopenharmony_ci** Copyright 1997 by Alain Malek 962306a36Sopenharmony_ci** 1062306a36Sopenharmony_ci** This file is subject to the terms and conditions of the GNU General Public 1162306a36Sopenharmony_ci** License. See the file COPYING in the main directory of this archive 1262306a36Sopenharmony_ci** for more details. 1362306a36Sopenharmony_ci** 1462306a36Sopenharmony_ci** Created: 11/28/97 by Alain Malek 1562306a36Sopenharmony_ci*/ 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#ifndef _M68K_AMIGAYLE_H_ 1862306a36Sopenharmony_ci#define _M68K_AMIGAYLE_H_ 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#include <linux/types.h> 2162306a36Sopenharmony_ci#include <asm/amigahw.h> 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci/* memory layout */ 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#define GAYLE_RAM (0x600000+zTwoBase) 2662306a36Sopenharmony_ci#define GAYLE_RAMSIZE (0x400000) 2762306a36Sopenharmony_ci#define GAYLE_ATTRIBUTE (0xa00000+zTwoBase) 2862306a36Sopenharmony_ci#define GAYLE_ATTRIBUTESIZE (0x020000) 2962306a36Sopenharmony_ci#define GAYLE_IO (0xa20000+zTwoBase) /* 16bit and even 8bit registers */ 3062306a36Sopenharmony_ci#define GAYLE_IOSIZE (0x010000) 3162306a36Sopenharmony_ci#define GAYLE_IO_8BITODD (0xa30000+zTwoBase) /* odd 8bit registers */ 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci/* offset for accessing odd IO registers */ 3462306a36Sopenharmony_ci#define GAYLE_ODD (GAYLE_IO_8BITODD-GAYLE_IO-1) 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/* GAYLE registers */ 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct GAYLE { 3962306a36Sopenharmony_ci u_char cardstatus; 4062306a36Sopenharmony_ci u_char pad0[0x1000-1]; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci u_char intreq; 4362306a36Sopenharmony_ci u_char pad1[0x1000-1]; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci u_char inten; 4662306a36Sopenharmony_ci u_char pad2[0x1000-1]; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci u_char config; 4962306a36Sopenharmony_ci u_char pad3[0x1000-1]; 5062306a36Sopenharmony_ci}; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci#define GAYLE_ADDRESS (0xda8000) /* gayle main registers base address */ 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define GAYLE_RESET (0xa40000) /* write 0x00 to start reset, 5562306a36Sopenharmony_ci read 1 byte to stop reset */ 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#define gayle (*(volatile struct GAYLE *)(zTwoBase+GAYLE_ADDRESS)) 5862306a36Sopenharmony_ci#define gayle_reset (*(volatile u_char *)(zTwoBase+GAYLE_RESET)) 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#define gayle_attribute ((volatile u_char *)(GAYLE_ATTRIBUTE)) 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci#if 0 6362306a36Sopenharmony_ci#define gayle_inb(a) readb( GAYLE_IO+(a)+(((a)&1)*GAYLE_ODD) ) 6462306a36Sopenharmony_ci#define gayle_outb(v,a) writeb( v, GAYLE_IO+(a)+(((a)&1)*GAYLE_ODD) ) 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci#define gayle_inw(a) readw( GAYLE_IO+(a) ) 6762306a36Sopenharmony_ci#define gayle_outw(v,a) writew( v, GAYLE_IO+(a) ) 6862306a36Sopenharmony_ci#endif 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci/* GAYLE_CARDSTATUS bit def */ 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#define GAYLE_CS_CCDET 0x40 /* credit card detect */ 7362306a36Sopenharmony_ci#define GAYLE_CS_BVD1 0x20 /* battery voltage detect 1 */ 7462306a36Sopenharmony_ci#define GAYLE_CS_SC 0x20 /* credit card status change */ 7562306a36Sopenharmony_ci#define GAYLE_CS_BVD2 0x10 /* battery voltage detect 2 */ 7662306a36Sopenharmony_ci#define GAYLE_CS_DA 0x10 /* digital audio */ 7762306a36Sopenharmony_ci#define GAYLE_CS_WR 0x08 /* write enable (1 == enabled) */ 7862306a36Sopenharmony_ci#define GAYLE_CS_BSY 0x04 /* credit card busy */ 7962306a36Sopenharmony_ci#define GAYLE_CS_IRQ 0x04 /* interrupt request */ 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci/* GAYLE_IRQ bit def */ 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci#define GAYLE_IRQ_IDE 0x80 8462306a36Sopenharmony_ci#define GAYLE_IRQ_CCDET 0x40 8562306a36Sopenharmony_ci#define GAYLE_IRQ_BVD1 0x20 8662306a36Sopenharmony_ci#define GAYLE_IRQ_SC 0x20 8762306a36Sopenharmony_ci#define GAYLE_IRQ_BVD2 0x10 8862306a36Sopenharmony_ci#define GAYLE_IRQ_DA 0x10 8962306a36Sopenharmony_ci#define GAYLE_IRQ_WR 0x08 9062306a36Sopenharmony_ci#define GAYLE_IRQ_BSY 0x04 9162306a36Sopenharmony_ci#define GAYLE_IRQ_IRQ 0x04 9262306a36Sopenharmony_ci#define GAYLE_IRQ_IDEACK1 0x02 9362306a36Sopenharmony_ci#define GAYLE_IRQ_IDEACK0 0x01 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci/* GAYLE_CONFIG bit def 9662306a36Sopenharmony_ci (bit 0-1 for program voltage, bit 2-3 for access speed */ 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci#define GAYLE_CFG_0V 0x00 9962306a36Sopenharmony_ci#define GAYLE_CFG_5V 0x01 10062306a36Sopenharmony_ci#define GAYLE_CFG_12V 0x02 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci#define GAYLE_CFG_100NS 0x08 10362306a36Sopenharmony_ci#define GAYLE_CFG_150NS 0x04 10462306a36Sopenharmony_ci#define GAYLE_CFG_250NS 0x00 10562306a36Sopenharmony_ci#define GAYLE_CFG_720NS 0x0c 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_cistruct gayle_ide_platform_data { 10862306a36Sopenharmony_ci unsigned long base; 10962306a36Sopenharmony_ci unsigned long irqport; 11062306a36Sopenharmony_ci int explicit_ack; /* A1200 IDE needs explicit ack */ 11162306a36Sopenharmony_ci}; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci#endif /* asm-m68k/amigayle.h */ 114