bcm2835_property.c (95a9457fd44ad97c518858a4e1586a5498f9773c) bcm2835_property.c (e1ecf8c8026fc1b1a742160e69c0ab3087bc2841)
1/*
2 * Raspberry Pi emulation (c) 2012 Gregory Estrade
3 * This code is licensed under the GNU GPLv2 and later.
4 */
5
6#include "qemu/osdep.h"
7#include "qapi/error.h"
8#include "hw/misc/bcm2835_property.h"

--- 42 unchanged lines hidden (view full) ---

51 case 0x00000000: /* End tag */
52 break;
53 case 0x00000001: /* Get firmware revision */
54 stl_le_phys(&s->dma_as, value + 12, 346337);
55 resplen = 4;
56 break;
57 case 0x00010001: /* Get board model */
58 qemu_log_mask(LOG_UNIMP,
1/*
2 * Raspberry Pi emulation (c) 2012 Gregory Estrade
3 * This code is licensed under the GNU GPLv2 and later.
4 */
5
6#include "qemu/osdep.h"
7#include "qapi/error.h"
8#include "hw/misc/bcm2835_property.h"

--- 42 unchanged lines hidden (view full) ---

51 case 0x00000000: /* End tag */
52 break;
53 case 0x00000001: /* Get firmware revision */
54 stl_le_phys(&s->dma_as, value + 12, 346337);
55 resplen = 4;
56 break;
57 case 0x00010001: /* Get board model */
58 qemu_log_mask(LOG_UNIMP,
59 "bcm2835_property: %x get board model NYI\n", tag);
59 "bcm2835_property: 0x%08x get board model NYI\n",
60 tag);
60 resplen = 4;
61 break;
62 case 0x00010002: /* Get board revision */
63 stl_le_phys(&s->dma_as, value + 12, s->board_rev);
64 resplen = 4;
65 break;
66 case 0x00010003: /* Get board MAC address */
67 resplen = sizeof(s->macaddr.a);
68 dma_memory_write(&s->dma_as, value + 12, s->macaddr.a, resplen);
69 break;
70 case 0x00010004: /* Get board serial */
71 qemu_log_mask(LOG_UNIMP,
61 resplen = 4;
62 break;
63 case 0x00010002: /* Get board revision */
64 stl_le_phys(&s->dma_as, value + 12, s->board_rev);
65 resplen = 4;
66 break;
67 case 0x00010003: /* Get board MAC address */
68 resplen = sizeof(s->macaddr.a);
69 dma_memory_write(&s->dma_as, value + 12, s->macaddr.a, resplen);
70 break;
71 case 0x00010004: /* Get board serial */
72 qemu_log_mask(LOG_UNIMP,
72 "bcm2835_property: %x get board serial NYI\n", tag);
73 "bcm2835_property: 0x%08x get board serial NYI\n",
74 tag);
73 resplen = 8;
74 break;
75 case 0x00010005: /* Get ARM memory */
76 /* base */
77 stl_le_phys(&s->dma_as, value + 12, 0);
78 /* size */
79 stl_le_phys(&s->dma_as, value + 16, s->fbdev->vcram_base);
80 resplen = 8;

--- 18 unchanged lines hidden (view full) ---

99
100 case 0x00030001: /* Get clock state */
101 stl_le_phys(&s->dma_as, value + 16, 0x1);
102 resplen = 8;
103 break;
104
105 case 0x00038001: /* Set clock state */
106 qemu_log_mask(LOG_UNIMP,
75 resplen = 8;
76 break;
77 case 0x00010005: /* Get ARM memory */
78 /* base */
79 stl_le_phys(&s->dma_as, value + 12, 0);
80 /* size */
81 stl_le_phys(&s->dma_as, value + 16, s->fbdev->vcram_base);
82 resplen = 8;

--- 18 unchanged lines hidden (view full) ---

101
102 case 0x00030001: /* Get clock state */
103 stl_le_phys(&s->dma_as, value + 16, 0x1);
104 resplen = 8;
105 break;
106
107 case 0x00038001: /* Set clock state */
108 qemu_log_mask(LOG_UNIMP,
107 "bcm2835_property: %x set clock state NYI\n", tag);
109 "bcm2835_property: 0x%08x set clock state NYI\n",
110 tag);
108 resplen = 8;
109 break;
110
111 case 0x00030002: /* Get clock rate */
112 case 0x00030004: /* Get max clock rate */
113 case 0x00030007: /* Get min clock rate */
114 switch (ldl_le_phys(&s->dma_as, value + 12)) {
115 case 1: /* EMMC */

--- 8 unchanged lines hidden (view full) ---

124 }
125 resplen = 8;
126 break;
127
128 case 0x00038002: /* Set clock rate */
129 case 0x00038004: /* Set max clock rate */
130 case 0x00038007: /* Set min clock rate */
131 qemu_log_mask(LOG_UNIMP,
111 resplen = 8;
112 break;
113
114 case 0x00030002: /* Get clock rate */
115 case 0x00030004: /* Get max clock rate */
116 case 0x00030007: /* Get min clock rate */
117 switch (ldl_le_phys(&s->dma_as, value + 12)) {
118 case 1: /* EMMC */

--- 8 unchanged lines hidden (view full) ---

127 }
128 resplen = 8;
129 break;
130
131 case 0x00038002: /* Set clock rate */
132 case 0x00038004: /* Set max clock rate */
133 case 0x00038007: /* Set min clock rate */
134 qemu_log_mask(LOG_UNIMP,
132 "bcm2835_property: %x set clock rates NYI\n", tag);
135 "bcm2835_property: 0x%08x set clock rate NYI\n",
136 tag);
133 resplen = 8;
134 break;
135
136 /* Temperature */
137
138 case 0x00030006: /* Get temperature */
139 stl_le_phys(&s->dma_as, value + 16, 25000);
140 resplen = 8;

--- 128 unchanged lines hidden (view full) ---

269 resplen = 4;
270 break;
271
272 case 0x00050001: /* Get command line */
273 resplen = 0;
274 break;
275
276 default:
137 resplen = 8;
138 break;
139
140 /* Temperature */
141
142 case 0x00030006: /* Get temperature */
143 stl_le_phys(&s->dma_as, value + 16, 25000);
144 resplen = 8;

--- 128 unchanged lines hidden (view full) ---

273 resplen = 4;
274 break;
275
276 case 0x00050001: /* Get command line */
277 resplen = 0;
278 break;
279
280 default:
277 qemu_log_mask(LOG_GUEST_ERROR,
278 "bcm2835_property: unhandled tag %08x\n", tag);
281 qemu_log_mask(LOG_UNIMP,
282 "bcm2835_property: unhandled tag 0x%08x\n", tag);
279 break;
280 }
281
282 if (tag == 0) {
283 break;
284 }
285
286 stl_le_phys(&s->dma_as, value + 8, (1 << 31) | resplen);

--- 155 unchanged lines hidden ---
283 break;
284 }
285
286 if (tag == 0) {
287 break;
288 }
289
290 stl_le_phys(&s->dma_as, value + 8, (1 << 31) | resplen);

--- 155 unchanged lines hidden ---