1
From 141e4172e8ae0387209f26d0362059a643c7f33a Mon Sep 17 00:00:00 2001
2
From: Peter Maydell <peter.maydell@linaro.org>
3
Date: Mon, 18 Feb 2013 16:58:32 +0000
4
Subject: [PATCH 50/70] hw/nseries.c: Add debug trace to MIPID
7
hw/arm/nseries.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++----
8
1 file changed, 50 insertions(+), 4 deletions(-)
10
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
11
index 2af8aca..c09d918 100644
12
--- a/hw/arm/nseries.c
13
+++ b/hw/arm/nseries.c
15
#include "hw/sysbus.h"
16
#include "exec/address-spaces.h"
18
+//#define MIPID_DEBUG
21
+#define TRACE_MIPID(fmt, ...) \
22
+ fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, __LINE__, ##__VA_ARGS__)
24
+#define TRACE_MIPID(...)
27
/* Nokia N8x0 support */
29
struct omap_mpu_state_s *mpu;
30
@@ -462,16 +471,20 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
37
case 0x01: /* SWRESET */
38
+ TRACE_MIPID("SWRESET");
39
mipid_reset(&s->spi.qdev);
42
case 0x02: /* BSTROFF */
43
+ TRACE_MIPID("BSTROFF");
46
case 0x03: /* BSTRON */
47
+ TRACE_MIPID("BSTRON");
51
@@ -480,6 +493,8 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
52
s->resp[0] = (s->id >> 16) & 0xff;
53
s->resp[1] = (s->id >> 8) & 0xff;
54
s->resp[2] = (s->id >> 0) & 0xff;
55
+ TRACE_MIPID("RDDID 0x%02x 0x%02x 0x%02x",
56
+ s->resp[0], s->resp[1], s->resp[2]);
59
case 0x06: /* RD_RED */
60
@@ -487,6 +502,7 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
61
/* XXX the bootloader sometimes issues RD_BLUE meaning RDDID so
62
* for the bootloader one needs to change this. */
63
case 0x08: /* RD_BLUE */
64
+ TRACE_MIPID("RD_RED/GREEN_BLUE 0x01");
66
/* TODO: return first pixel components */
68
@@ -500,80 +516,100 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
69
s->resp[2] = (s->vscr << 7) | (s->invert << 5) |
70
(s->onoff << 2) | (s->te << 1) | (s->gamma >> 2);
71
s->resp[3] = s->gamma << 6;
72
+ TRACE_MIPID("RDDST 0x%02x 0x%02x 0x%02x 0x%02x",
73
+ s->resp[0], s->resp[1], s->resp[2], s->resp[3]);
76
case 0x0a: /* RDDPM */
78
s->resp[0] = (s->onoff << 2) | (s->normal << 3) | (s->sleep << 4) |
79
(s->partial << 5) | (s->sleep << 6) | (s->booster << 7);
80
+ TRACE_MIPID("RDDPM 0x%02x", s->resp[0]);
82
case 0x0b: /* RDDMADCTR */
85
+ TRACE_MIPID("RDDMACTR 0x%02x", s->resp[0]);
87
case 0x0c: /* RDDCOLMOD */
89
s->resp[0] = 5; /* 65K colours */
90
+ TRACE_MIPID("RDDCOLMOD 0x%02x", s->resp[0]);
92
case 0x0d: /* RDDIM */
94
s->resp[0] = (s->invert << 5) | (s->vscr << 7) | s->gamma;
95
+ TRACE_MIPID("RDDIM 0x%02x", s->resp[0]);
97
case 0x0e: /* RDDSM */
99
s->resp[0] = s->te << 7;
100
+ TRACE_MIPID("RDDSM 0x%02x", s->resp[0]);
102
case 0x0f: /* RDDSDR */
104
s->resp[0] = s->selfcheck;
105
+ TRACE_MIPID("RDDSDR 0x%02x", s->resp[0]);
108
case 0x10: /* SLPIN */
109
+ TRACE_MIPID("SLPIN");
112
case 0x11: /* SLPOUT */
113
+ TRACE_MIPID("SLPOUT");
115
s->selfcheck ^= 1 << 6; /* POFF self-diagnosis Ok */
118
case 0x12: /* PTLON */
119
+ TRACE_MIPID("PTLON");
124
case 0x13: /* NORON */
125
+ TRACE_MIPID("NORON");
131
case 0x20: /* INVOFF */
132
+ TRACE_MIPID("INVOFF");
135
case 0x21: /* INVON */
136
+ TRACE_MIPID("INVON");
140
case 0x22: /* APOFF */
141
case 0x23: /* APON */
142
+ TRACE_MIPID("APON/OFF");
145
case 0x25: /* WRCNTR */
146
+ TRACE_MIPID("WRCNTR");
151
case 0x26: /* GAMSET */
154
s->gamma = ffs(s->param[0] & 0xf) - 1;
155
- else if (s->pm < 0)
156
+ TRACE_MIPID("GAMSET 0x%02x", s->gamma);
157
+ } else if (s->pm < 0) {
162
case 0x28: /* DISPOFF */
163
+ TRACE_MIPID("DISPOFF");
166
case 0x29: /* DISPON */
167
+ TRACE_MIPID("DISPON");
171
@@ -587,19 +623,24 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
174
case 0x34: /* TEOFF */
175
+ TRACE_MIPID("TEOFF");
178
case 0x35: /* TEON */
182
- else if (s->pm < 0)
183
+ TRACE_MIPID("TEON 0x%02x", s->param[0] & 0xff);
184
+ } else if (s->pm < 0) {
189
case 0x36: /* MADCTR */
190
+ TRACE_MIPID("MADCTR");
193
case 0x37: /* VSCSAD */
194
+ TRACE_MIPID("VSCSAD");
198
@@ -617,6 +658,7 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
201
case 0xb4: /* FRMSEL */
202
+ TRACE_MIPID("FRMSEL");
205
case 0xb5: /* FRM8SEL */
206
@@ -631,6 +673,7 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
210
+ TRACE_MIPID("??? 0x%02x 0x%02x", s->resp[0], s->resp[1]);
213
case 0xc2: /* IFMOD */
214
@@ -649,14 +692,17 @@ static uint32_t mipid_txrx(SPIDevice *spidev, uint32_t cmd, int len)
215
case 0xda: /* RDID1 */
217
s->resp[0] = (s->id >> 16) & 0xff;
218
+ TRACE_MIPID("RDID1 0x%02x", s->resp[0]);
220
case 0xdb: /* RDID2 */
222
s->resp[0] = (s->id >> 8) & 0xff;
223
+ TRACE_MIPID("RDID2 0x%02x", s->resp[0]);
225
case 0xdc: /* RDID3 */
227
s->resp[0] = (s->id >> 0) & 0xff;
228
+ TRACE_MIPID("RDID3 0x%02x", s->resp[0]);