aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Hardware/TRG/EmRegs330CPLD.h
blob: 08487aa3c85d846c621caf4899a16e0f4bf89412 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/* -*- mode: C++; tab-width: 4 -*- */
/* ===================================================================== *\
	Copyright (c) 2000-2001 Palm, Inc. or its subsidiaries.
	All rights reserved.

	This file is part of the Palm OS Emulator.

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.
\* ===================================================================== */
#ifndef EmRegs330CPLD_h
#define EmRegs330CPLD_h

#include "EmRegs.h"
#include "EmHandEra330Defs.h"

#define CpldReg00                 0x0000
// CPLD Register 0x0000 Bit Definitions
// -------------------------------------
   #define Cpld0Edo               0x0002
   #define Cpld0Sdram             0x0000

#define CpldReg02                 0x0002
// CPLD Register 0x0002 Bit Definitions
// -------------------------------------
   #define Cpld2NoCfDetect        0x8000
   #define Cpld2CfDetect          0x0000

   #define Cpld2NoSdDetect        0x4000
   #define Cpld2SdDetect          0x0000
   
   #define Cpld2NoExPwrDetect     0x2000
   #define Cpld2ExPwrDetect       0x0000

   #define Cpld2SdUnwriteProt     0x0000
   #define Cpld2SdWriteProt       0x1000

   #define Cpld2SdPowerOn         0x0000
   #define Cpld2SdPowerOff        0x0200

   #define Cpld2Kbd3Active        0x0000
   #define Cpld2Kbd3Inactive      0x0100

   #define Cpld2Kbd2Active        0x0000
   #define Cpld2Kbd2Inactive      0x0080

   #define Cpld2Kbd1Active        0x0000
   #define Cpld2Kbd1Inactive      0x0040

   #define Cpld2Kbd0Active        0x0000
   #define Cpld2Kbd0Inactive      0x0020

   #define Cpld2NoReset           0x0000
   #define Cpld2Reset             0x0010
   
   #define Cpld2CfBufsOff         0x0000
   #define Cpld2CfBufsOn          0x0008

   #define Cpld2SwapOff           0x0000
   #define Cpld2SwapOn            0x0004

   #define Cpld2CfPowerOn         0x0000
   #define Cpld2CfPowerOff        0x0002

   #define Cpld2BusWidth16        0x0000
   #define Cpld2BusWidth8         0x0001

#define CpldReg04                 0x0004
// CPLD Register 0x0004 Bit Definitions
// -------------------------------------
   #define Cpld4LcdBiasOff        0x0000
   #define Cpld4LcdBiasOn         0x0400

   #define Cpld4LcdVccOn          0x0000
   #define Cpld4LcdVccOff         0x0200

   #define Cpld4LcdOff            0x0000
   #define Cpld4LcdON             0x0100

   #define Cpld4BlPdOff           0x0000
   #define Cpld4BlPdOn            0x0080

   #define Cpld4DtrOn             0x0000
   #define Cpld4DtrOff            0x0040

   #define Cpld4MmcCsOff          0x0000
   #define Cpld4MmcCsOn           0x0020

   #define Cpld4FiltSdOff         0x0000
   #define Cpld4FiltSdOn          0x0010

   #define Cpld4Rs232Off          0x0000
   #define Cpld4Rs232On           0x0008

   #define Cpld4IrdaOn            0x0000
   #define Cpld4IrdaOff           0x0004

   #define Cpld4MicOn             0x0000
   #define Cpld4MicOff            0x0002

   #define Cpld4SenseVoltage      0x0000
   #define Cpld4SenseCurrent      0x0001


const uint32 kMemoryStartCPLD = 0x10E00000;
const uint32 kMemorySizeCPLD  = 0x100;

class EmRegs330CPLD : public EmRegs
{
    public:
                    EmRegs330CPLD   (HandEra330PortManager * fPortManager);
    virtual         ~EmRegs330CPLD  (void);

	virtual void	Reset					(Bool hardwareReset);

    uint8*          GetRealAddress          (emuptr address);
    void            SetSubBankHandlers      (void);
    emuptr          GetAddressStart         (void);
    uint32          GetAddressRange         (void);

    uint32          GetWord                 (emuptr iAddress);
    void            SetWord                 (emuptr iAddress, uint32 iWordValue);

    // only word access is allowed to the CPLD
//    uint32          GetLong                 (emuptr iAddress) { return 0;}
//    uint32          GetByte                 (emuptr iAddress) { return 0;}
//    void            SetLong                 (emuptr iAddress, uint32 iLongValue) {}
//    void            SetByte                 (emuptr iAddress, uint32 iByteValue) {}
private:
    uint16          Reg0;
    uint16          Reg2;
    uint16          Reg4;
    uint8           Buffer[kMemorySizeCPLD];
    uint32          Read    (emuptr address, int size);
    void            Write   (emuptr address, int size, uint32 value);
//    void            SetReg02(uint16 val);
//    void            SetReg04(uint16 val);
    HandEra330PortManager * fPortMgr;
};

#endif	// EmTRGCFDefs_h