Commit d7ce296f57740c076279fd6a0282bea255ec0842
1 parent
f8407028
power down support + date fix (Thayne Harbaugh)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1275 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
10 additions
and
1 deletions
hw/cuda.c
| @@ -87,6 +87,9 @@ | @@ -87,6 +87,9 @@ | ||
| 87 | #define CUDA_TIMER_FREQ (4700000 / 6) | 87 | #define CUDA_TIMER_FREQ (4700000 / 6) |
| 88 | #define CUDA_ADB_POLL_FREQ 50 | 88 | #define CUDA_ADB_POLL_FREQ 50 |
| 89 | 89 | ||
| 90 | +/* CUDA returns time_t's offset from Jan 1, 1904, not 1970 */ | ||
| 91 | +#define RTC_OFFSET 2082844800 | ||
| 92 | + | ||
| 90 | typedef struct CUDATimer { | 93 | typedef struct CUDATimer { |
| 91 | unsigned int latch; | 94 | unsigned int latch; |
| 92 | uint16_t counter_value; /* counter value at load time */ | 95 | uint16_t counter_value; /* counter value at load time */ |
| @@ -503,7 +506,7 @@ static void cuda_receive_packet(CUDAState *s, | @@ -503,7 +506,7 @@ static void cuda_receive_packet(CUDAState *s, | ||
| 503 | break; | 506 | break; |
| 504 | case CUDA_GET_TIME: | 507 | case CUDA_GET_TIME: |
| 505 | /* XXX: add time support ? */ | 508 | /* XXX: add time support ? */ |
| 506 | - ti = time(NULL); | 509 | + ti = time(NULL) + RTC_OFFSET; |
| 507 | obuf[0] = CUDA_PACKET; | 510 | obuf[0] = CUDA_PACKET; |
| 508 | obuf[1] = 0; | 511 | obuf[1] = 0; |
| 509 | obuf[2] = 0; | 512 | obuf[2] = 0; |
| @@ -522,6 +525,12 @@ static void cuda_receive_packet(CUDAState *s, | @@ -522,6 +525,12 @@ static void cuda_receive_packet(CUDAState *s, | ||
| 522 | obuf[1] = 0; | 525 | obuf[1] = 0; |
| 523 | cuda_send_packet_to_host(s, obuf, 2); | 526 | cuda_send_packet_to_host(s, obuf, 2); |
| 524 | break; | 527 | break; |
| 528 | + case CUDA_POWERDOWN: | ||
| 529 | + obuf[0] = CUDA_PACKET; | ||
| 530 | + obuf[1] = 0; | ||
| 531 | + cuda_send_packet_to_host(s, obuf, 2); | ||
| 532 | + qemu_system_shutdown_request(); | ||
| 533 | + break; | ||
| 525 | default: | 534 | default: |
| 526 | break; | 535 | break; |
| 527 | } | 536 | } |