} else {
ushort_t reload_val = ch->reload_value;
+ if (ch->op_mode == SW_STROBE) {
+ reload_val = 0xffff;
+ }
+
// TODO: Check this....
// Is this correct???
if (reload_val == 0) {
break;
case SW_STROBE:
- return -1;
+
+ if (channel_cycles > 0) {
+ if (ch->output_pin == 1) {
+ ch->output_pin = 0;
+ output_changed = 1;
+ }
+ }
break;
case HW_STROBE:
+ PrintError("Hardware strobe not implemented\n");
return -1;
break;
default:
PrintDebug("8254 PIT: Channel Run State=%d\n", ch->run_state);
break;
default:
+ PrintError("Invalid Access state\n");
return -1;
}
case SQR_WAVE:
ch->output_pin = 1;
break;
+ case SW_STROBE:
+ ch->output_pin = 1;
+ break;
default:
+ PrintError("Invalid OP_MODE: %d\n", ch->op_mode);
return -1;
break;
}
case SQR_WAVE:
ch->output_pin = 1;
break;
+ case SW_STROBE:
+ ch->output_pin = 1;
+ break;
default:
+ PrintError("Invalid OP_MODE: %d\n", cmd.op_mode);
return -1;
}
switch (port) {
case CHANNEL0_PORT:
if (handle_channel_read(&(state->ch_0), val) == -1) {
+ PrintError("CHANNEL0 read error\n");
return -1;
}
break;
case CHANNEL1_PORT:
if (handle_channel_read(&(state->ch_1), val) == -1) {
+ PrintError("CHANNEL1 read error\n");
return -1;
}
break;
case CHANNEL2_PORT:
if (handle_channel_read(&(state->ch_2), val) == -1) {
+ PrintError("CHANNEL2 read error\n");
return -1;
}
break;
switch (port) {
case CHANNEL0_PORT:
if (handle_channel_write(&(state->ch_0), val) == -1) {
+ PrintError("CHANNEL0 write error\n");
return -1;
}
break;
case CHANNEL1_PORT:
if (handle_channel_write(&(state->ch_1), val) == -1) {
+ PrintError("CHANNEL1 write error\n");
return -1;
}
break;
case CHANNEL2_PORT:
if (handle_channel_write(&(state->ch_2), val) == -1) {
+ PrintError("CHANNEL2 write error\n");
return -1;
}
break;
switch (cmd->channel) {
case 0:
if (handle_channel_cmd(&(state->ch_0), *cmd) == -1) {
+ PrintError("CHANNEL0 command error\n");
return -1;
}
break;
case 1:
if (handle_channel_cmd(&(state->ch_1), *cmd) == -1) {
+ PrintError("CHANNEL1 command error\n");
return -1;
}
break;
case 2:
if (handle_channel_cmd(&(state->ch_2), *cmd) == -1) {
+ PrintError("CHANNEL2 command error\n");
return -1;
}
break;
case 3:
// Read Back command
+ PrintError("Read back command not implemented\n");
return -1;
break;
default: