Changeset 108986 in vbox
- Timestamp:
- Apr 15, 2025 2:58:11 PM (5 days ago)
- svn:sync-xref-src-repo-rev:
- 168506
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Input/DevPS2M.cpp
r106061 r108986 504 504 505 505 #ifndef IN_RING3 506 RT_NOREF(pDevIns); /* pDevIns only used IN_RING3 */ 507 506 508 /* Reset, Enable, and Set Default commands must be run in R3. */ 507 509 if (cmd == ACMD_RESET || cmd == ACMD_ENABLE || cmd == ACMD_SET_DEFAULT) … … 511 513 switch (cmd) 512 514 { 513 case ACMD_SET_SCALE_11: 514 pThis->u8State &= ~AUX_STATE_SCALING; 515 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 516 pThis->u8CurrCmd = 0; 517 break; 518 case ACMD_SET_SCALE_21: 519 pThis->u8State |= AUX_STATE_SCALING; 520 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 521 pThis->u8CurrCmd = 0; 522 break; 523 case ACMD_REQ_STATUS: 524 /* Report current status, sample rate, and resolution. */ 525 u8Val = (pThis->u8State & AUX_STATE_EXTERNAL) | (pThis->fCurrB & PS2M_STD_BTN_MASK); 526 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 527 PS2Q_INSERT(&pThis->cmdQ, u8Val); 528 PS2Q_INSERT(&pThis->cmdQ, pThis->u8Resolution); 529 PS2Q_INSERT(&pThis->cmdQ, pThis->u8SampleRate); 530 pThis->u8CurrCmd = 0; 531 break; 532 case ACMD_SET_STREAM: 533 pThis->u8State &= ~AUX_STATE_REMOTE; 534 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 535 pThis->u8CurrCmd = 0; 536 break; 537 case ACMD_READ_REMOTE: 538 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 539 ps2mReportAccumulatedEvents(pThis, &pThis->cmdQ.Hdr, RT_ELEMENTS(pThis->cmdQ.abQueue), pThis->cmdQ.abQueue, false); 540 pThis->u8CurrCmd = 0; 541 break; 542 case ACMD_RESET_WRAP: 543 pThis->enmMode = AUX_MODE_STD; 544 /* NB: Stream mode reporting remains disabled! */ 545 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 546 pThis->u8CurrCmd = 0; 547 break; 548 case ACMD_SET_WRAP: 549 pThis->enmMode = AUX_MODE_WRAP; 550 pThis->u8State &= ~AUX_STATE_ENABLED; 551 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 552 pThis->u8CurrCmd = 0; 553 break; 554 case ACMD_SET_REMOTE: 555 pThis->u8State |= AUX_STATE_REMOTE; 556 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 557 pThis->u8CurrCmd = 0; 558 break; 559 case ACMD_READ_ID: 560 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 561 /* ImEx + horizontal is protocol 4, just like plain ImEx. */ 562 u8Val = pThis->enmProtocol == PS2M_PROTO_IMEX_HORZ ? PS2M_PROTO_IMEX : pThis->enmProtocol; 563 PS2Q_INSERT(&pThis->cmdQ, u8Val); 564 pThis->u8CurrCmd = 0; 565 break; 515 #ifdef IN_RING3 566 516 case ACMD_ENABLE: 567 517 pThis->u8State |= AUX_STATE_ENABLED; 568 #ifdef IN_RING3569 518 ps2mR3SetDriverState(&PDMDEVINS_2_DATA_CC(pDevIns, PKBDSTATER3)->Aux, true); 570 #else571 AssertLogRelMsgFailed(("Invalid ACMD_ENABLE outside R3!\n"));572 #endif573 519 PS2Q_CLEAR(&pThis->evtQ); 574 520 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 575 pThis->u8CurrCmd = 0;576 break;577 case ACMD_DISABLE:578 pThis->u8State &= ~AUX_STATE_ENABLED;579 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK);580 pThis->u8CurrCmd = 0;581 break;582 case ACMD_SET_DEFAULT:583 ps2mSetDefaults(pThis);584 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK);585 pThis->u8CurrCmd = 0;586 break;587 case ACMD_RESEND:588 521 pThis->u8CurrCmd = 0; 589 522 break; … … 598 531 PDMDevHlpTimerSetMillies(pDevIns, pThis->hDelayTimer, 1); 599 532 else 600 #ifdef IN_RING3601 533 ps2mR3Reset(pThis, &PDMDEVINS_2_DATA_CC(pDevIns, PKBDSTATER3)->Aux); 602 #else 603 AssertLogRelMsgFailed(("Invalid ACMD_RESET outside R3!\n")); 534 break; 535 case ACMD_SET_DEFAULT: 536 ps2mSetDefaults(pThis); 537 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 538 pThis->u8CurrCmd = 0; 539 break; 604 540 #endif 541 case ACMD_SET_SCALE_11: 542 pThis->u8State &= ~AUX_STATE_SCALING; 543 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 544 pThis->u8CurrCmd = 0; 545 break; 546 case ACMD_SET_SCALE_21: 547 pThis->u8State |= AUX_STATE_SCALING; 548 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 549 pThis->u8CurrCmd = 0; 550 break; 551 case ACMD_REQ_STATUS: 552 /* Report current status, sample rate, and resolution. */ 553 u8Val = (pThis->u8State & AUX_STATE_EXTERNAL) | (pThis->fCurrB & PS2M_STD_BTN_MASK); 554 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 555 PS2Q_INSERT(&pThis->cmdQ, u8Val); 556 PS2Q_INSERT(&pThis->cmdQ, pThis->u8Resolution); 557 PS2Q_INSERT(&pThis->cmdQ, pThis->u8SampleRate); 558 pThis->u8CurrCmd = 0; 559 break; 560 case ACMD_SET_STREAM: 561 pThis->u8State &= ~AUX_STATE_REMOTE; 562 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 563 pThis->u8CurrCmd = 0; 564 break; 565 case ACMD_READ_REMOTE: 566 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 567 ps2mReportAccumulatedEvents(pThis, &pThis->cmdQ.Hdr, RT_ELEMENTS(pThis->cmdQ.abQueue), pThis->cmdQ.abQueue, false); 568 pThis->u8CurrCmd = 0; 569 break; 570 case ACMD_RESET_WRAP: 571 pThis->enmMode = AUX_MODE_STD; 572 /* NB: Stream mode reporting remains disabled! */ 573 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 574 pThis->u8CurrCmd = 0; 575 break; 576 case ACMD_SET_WRAP: 577 pThis->enmMode = AUX_MODE_WRAP; 578 pThis->u8State &= ~AUX_STATE_ENABLED; 579 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 580 pThis->u8CurrCmd = 0; 581 break; 582 case ACMD_SET_REMOTE: 583 pThis->u8State |= AUX_STATE_REMOTE; 584 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 585 pThis->u8CurrCmd = 0; 586 break; 587 case ACMD_READ_ID: 588 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 589 /* ImEx + horizontal is protocol 4, just like plain ImEx. */ 590 u8Val = pThis->enmProtocol == PS2M_PROTO_IMEX_HORZ ? PS2M_PROTO_IMEX : pThis->enmProtocol; 591 PS2Q_INSERT(&pThis->cmdQ, u8Val); 592 pThis->u8CurrCmd = 0; 593 break; 594 case ACMD_DISABLE: 595 pThis->u8State &= ~AUX_STATE_ENABLED; 596 PS2Q_INSERT(&pThis->cmdQ, ARSP_ACK); 597 pThis->u8CurrCmd = 0; 598 break; 599 case ACMD_RESEND: 600 pThis->u8CurrCmd = 0; 605 601 break; 606 602 /* The following commands need a parameter. */
Note:
See TracChangeset
for help on using the changeset viewer.