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)