FreeCalypso > hg > freecalypso-tools
comparison target-utils/buzplayer/pwt.c @ 821:16bee7b6bd6b
buzplayer: PWT needs to be turned on in order to not hang
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 30 May 2021 04:01:33 +0000 |
parents | 03457a66d860 |
children | 7c02cc7f28df |
comparison
equal
deleted
inserted
replaced
820:03457a66d860 | 821:16bee7b6bd6b |
---|---|
14 #define PWT_FRC_REG (*(volatile u8 *) 0xFFFE8800) | 14 #define PWT_FRC_REG (*(volatile u8 *) 0xFFFE8800) |
15 #define PWT_VCR_REG (*(volatile u8 *) 0xFFFE8801) | 15 #define PWT_VCR_REG (*(volatile u8 *) 0xFFFE8801) |
16 #define PWT_GCR_REG (*(volatile u8 *) 0xFFFE8802) | 16 #define PWT_GCR_REG (*(volatile u8 *) 0xFFFE8802) |
17 | 17 |
18 void | 18 void |
19 pwt_on() | |
20 { | |
21 ASIC_CONF_REG |= PWT_MODE_MASK; | |
22 PWT_GCR_REG = 0x01; | |
23 } | |
24 | |
25 void | |
26 pwt_off() | |
27 { | |
28 ASIC_CONF_REG &= ~PWT_MODE_MASK; | |
29 PWT_GCR_REG = 0; | |
30 } | |
31 | |
32 void | |
19 cmd_pwt(argbulk) | 33 cmd_pwt(argbulk) |
20 char *argbulk; | 34 char *argbulk; |
21 { | 35 { |
22 char *argv[2]; | 36 char *argv[2]; |
23 | 37 |
24 if (parse_args(argbulk, 1, 1, argv, 0) < 0) | 38 if (parse_args(argbulk, 1, 1, argv, 0) < 0) |
25 return; | 39 return; |
26 if (!strcmp(argv[0], "on")) { | 40 if (!strcmp(argv[0], "on")) |
27 ASIC_CONF_REG |= PWT_MODE_MASK; | 41 pwt_on(); |
28 PWT_GCR_REG = 0x01; | 42 else if (!strcmp(argv[0], "off")) |
29 } else if (!strcmp(argv[0], "off")) { | 43 pwt_off(); |
30 ASIC_CONF_REG &= ~PWT_MODE_MASK; | 44 else |
31 PWT_GCR_REG = 0; | |
32 } else | |
33 printf("ERROR: \"on\" or \"off\" argument expected\n"); | 45 printf("ERROR: \"on\" or \"off\" argument expected\n"); |
34 } | 46 } |
35 | 47 |
36 void | 48 void |
37 cmd_buzpwt(argbulk) | 49 cmd_buzpwt(argbulk) |
54 printf("ERROR: volume argument out of range\n"); | 66 printf("ERROR: volume argument out of range\n"); |
55 return; | 67 return; |
56 } | 68 } |
57 } else | 69 } else |
58 vol = 63; | 70 vol = 63; |
71 pwt_on(); | |
59 PWT_FRC_REG = note; | 72 PWT_FRC_REG = note; |
60 PWT_VCR_REG = (vol << 1) | 1; | 73 PWT_VCR_REG = (vol << 1) | 1; |
61 for (;;) { | 74 for (;;) { |
62 c = serial_in_poll(); | 75 c = serial_in_poll(); |
63 if (c >= 0) | 76 if (c >= 0) |