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 --- |