25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: dev_jazz.c,v 1.27 2007/01/28 13:28:27 debug Exp $ |
* $Id: dev_jazz.c,v 1.29 2007/06/15 19:11:15 debug Exp $ |
29 |
* |
* |
30 |
* Microsoft Jazz-related stuff (Acer PICA-61, etc). |
* COMMENT: Microsoft Jazz-related stuff (Acer PICA-61, etc) |
31 |
* |
* |
32 |
* TODO/NOTE: This is mostly a quick hack, it doesn't really implement |
* TODO/NOTE: This is mostly a quick hack, it doesn't really implement |
33 |
* much of the Jazz architecture. Also, the a0/20 isa-like stuff is |
* much of the Jazz architecture. Also, the a0/20 isa-like stuff is |
268 |
|
|
269 |
DEVICE_ACCESS(jazz) |
DEVICE_ACCESS(jazz) |
270 |
{ |
{ |
271 |
struct jazz_data *d = (struct jazz_data *) extra; |
struct jazz_data *d = extra; |
272 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
273 |
int regnr; |
int regnr; |
274 |
|
|
422 |
|
|
423 |
DEVICE_ACCESS(jazz_led) |
DEVICE_ACCESS(jazz_led) |
424 |
{ |
{ |
425 |
struct jazz_data *d = (struct jazz_data *) extra; |
struct jazz_data *d = extra; |
426 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
427 |
int regnr; |
int regnr; |
428 |
|
|
468 |
*/ |
*/ |
469 |
DEVICE_ACCESS(jazz_a0) |
DEVICE_ACCESS(jazz_a0) |
470 |
{ |
{ |
471 |
struct jazz_data *d = (struct jazz_data *) extra; |
struct jazz_data *d = extra; |
472 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
473 |
|
|
474 |
if (writeflag == MEM_WRITE) |
if (writeflag == MEM_WRITE) |
520 |
*/ |
*/ |
521 |
DEVICE_ACCESS(jazz_20) |
DEVICE_ACCESS(jazz_20) |
522 |
{ |
{ |
523 |
struct jazz_data *d = (struct jazz_data *) extra; |
struct jazz_data *d = extra; |
524 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
525 |
|
|
526 |
if (writeflag == MEM_WRITE) |
if (writeflag == MEM_WRITE) |
572 |
*/ |
*/ |
573 |
DEVICE_ACCESS(jazz_jazzio) |
DEVICE_ACCESS(jazz_jazzio) |
574 |
{ |
{ |
575 |
struct jazz_data *d = (struct jazz_data *) extra; |
struct jazz_data *d = extra; |
576 |
uint64_t idata = 0, odata = 0; |
uint64_t idata = 0, odata = 0; |
577 |
int i, v; |
int i, v; |
578 |
|
|
621 |
|
|
622 |
DEVINIT(jazz) |
DEVINIT(jazz) |
623 |
{ |
{ |
624 |
|
struct jazz_data *d; |
625 |
char tmpstr[300]; |
char tmpstr[300]; |
626 |
int i; |
int i; |
627 |
struct jazz_data *d = malloc(sizeof(struct jazz_data)); |
|
628 |
if (d == NULL) { |
CHECK_ALLOCATION(d = malloc(sizeof(struct jazz_data))); |
|
fprintf(stderr, "out of memory\n"); |
|
|
exit(1); |
|
|
} |
|
629 |
memset(d, 0, sizeof(struct jazz_data)); |
memset(d, 0, sizeof(struct jazz_data)); |
630 |
|
|
631 |
d->cpu = devinit->machine->cpus[0]; /* TODO */ |
d->cpu = devinit->machine->cpus[0]; /* TODO */ |
700 |
/* Add a timer, hardcoded to 100 Hz. TODO: Don't hardcode! */ |
/* Add a timer, hardcoded to 100 Hz. TODO: Don't hardcode! */ |
701 |
d->timer = timer_add(100.0, timer_tick, d); |
d->timer = timer_add(100.0, timer_tick, d); |
702 |
machine_add_tickfunction(devinit->machine, dev_jazz_tick, |
machine_add_tickfunction(devinit->machine, dev_jazz_tick, |
703 |
d, DEV_JAZZ_TICKSHIFT, 0.0); |
d, DEV_JAZZ_TICKSHIFT); |
704 |
|
|
705 |
devinit->return_ptr = d; |
devinit->return_ptr = d; |
706 |
|
|