bcm2835_dma.c (95a9457fd44ad97c518858a4e1586a5498f9773c) bcm2835_dma.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/dma/bcm2835_dma.h"

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

175 break;
176 case BCM2708_DMA_NEXTCB:
177 res = ch->nextconbk;
178 break;
179 case BCM2708_DMA_DEBUG:
180 res = ch->debug;
181 break;
182 default:
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/dma/bcm2835_dma.h"

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

175 break;
176 case BCM2708_DMA_NEXTCB:
177 res = ch->nextconbk;
178 break;
179 case BCM2708_DMA_DEBUG:
180 res = ch->debug;
181 break;
182 default:
183 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset %"HWADDR_PRIx"\n",
183 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset 0x%"HWADDR_PRIx"\n",
184 __func__, offset);
185 break;
186 }
187 return res;
188}
189
190static void bcm2835_dma_write(BCM2835DMAState *s, hwaddr offset,
191 uint64_t value, unsigned size, unsigned c)

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

223 break;
224 case BCM2708_DMA_ADDR:
225 ch->conblk_ad = value;
226 break;
227 case BCM2708_DMA_DEBUG:
228 ch->debug = value;
229 break;
230 default:
184 __func__, offset);
185 break;
186 }
187 return res;
188}
189
190static void bcm2835_dma_write(BCM2835DMAState *s, hwaddr offset,
191 uint64_t value, unsigned size, unsigned c)

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

223 break;
224 case BCM2708_DMA_ADDR:
225 ch->conblk_ad = value;
226 break;
227 case BCM2708_DMA_DEBUG:
228 ch->debug = value;
229 break;
230 default:
231 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset %"HWADDR_PRIx"\n",
231 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset 0x%"HWADDR_PRIx"\n",
232 __func__, offset);
233 break;
234 }
235}
236
237static uint64_t bcm2835_dma0_read(void *opaque, hwaddr offset, unsigned size)
238{
239 BCM2835DMAState *s = opaque;
240
241 if (offset < 0xf00) {
242 return bcm2835_dma_read(s, (offset & 0xff), size, (offset >> 8) & 0xf);
243 } else {
244 switch (offset) {
245 case BCM2708_DMA_INT_STATUS:
246 return s->int_status;
247 case BCM2708_DMA_ENABLE:
248 return s->enable;
249 default:
232 __func__, offset);
233 break;
234 }
235}
236
237static uint64_t bcm2835_dma0_read(void *opaque, hwaddr offset, unsigned size)
238{
239 BCM2835DMAState *s = opaque;
240
241 if (offset < 0xf00) {
242 return bcm2835_dma_read(s, (offset & 0xff), size, (offset >> 8) & 0xf);
243 } else {
244 switch (offset) {
245 case BCM2708_DMA_INT_STATUS:
246 return s->int_status;
247 case BCM2708_DMA_ENABLE:
248 return s->enable;
249 default:
250 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset %"HWADDR_PRIx"\n",
250 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset 0x%"HWADDR_PRIx"\n",
251 __func__, offset);
252 return 0;
253 }
254 }
255}
256
257static uint64_t bcm2835_dma15_read(void *opaque, hwaddr offset, unsigned size)
258{

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

269 } else {
270 switch (offset) {
271 case BCM2708_DMA_INT_STATUS:
272 break;
273 case BCM2708_DMA_ENABLE:
274 s->enable = (value & 0xffff);
275 break;
276 default:
251 __func__, offset);
252 return 0;
253 }
254 }
255}
256
257static uint64_t bcm2835_dma15_read(void *opaque, hwaddr offset, unsigned size)
258{

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

269 } else {
270 switch (offset) {
271 case BCM2708_DMA_INT_STATUS:
272 break;
273 case BCM2708_DMA_ENABLE:
274 s->enable = (value & 0xffff);
275 break;
276 default:
277 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset %"HWADDR_PRIx"\n",
277 qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset 0x%"HWADDR_PRIx"\n",
278 __func__, offset);
279 }
280 }
281
282}
283
284static void bcm2835_dma15_write(void *opaque, hwaddr offset, uint64_t value,
285 unsigned size)

--- 128 unchanged lines hidden ---
278 __func__, offset);
279 }
280 }
281
282}
283
284static void bcm2835_dma15_write(void *opaque, hwaddr offset, uint64_t value,
285 unsigned size)

--- 128 unchanged lines hidden ---