diff --git a/Source/HBIOS/ch376-native/base-drv/ch376.c.s b/Source/HBIOS/ch376-native/base-drv/ch376.c.s index 54dde6cc..35d7c3cb 100644 --- a/Source/HBIOS/ch376-native/base-drv/ch376.c.s +++ b/Source/HBIOS/ch376-native/base-drv/ch376.c.s @@ -251,7 +251,7 @@ l_ch_probe_00107: inc sp pop ix ret -;source-doc/base-drv/ch376.c:112: uint8_t ch_cmd_set_usb_mode(const uint8_t mode) __z88dk_fastcall { +;source-doc/base-drv/ch376.c:112: usb_error ch_cmd_set_usb_mode(const uint8_t mode) __z88dk_fastcall { ; --------------------------------- ; Function ch_cmd_set_usb_mode ; --------------------------------- @@ -581,7 +581,7 @@ l_ch_data_in_transfer_00111: ;source-doc/base-drv/ch376.c:187: } pop ix ret -;source-doc/base-drv/ch376.c:190: usb_error ch_data_in_transfer_n(uint8_t *const buffer, int8_t *const buffer_size, endpoint_param *const endpoint) { +;source-doc/base-drv/ch376.c:190: usb_error ch_data_in_transfer_n(uint8_t *const buffer, uint8_t *const buffer_size, endpoint_param *const endpoint) { ; --------------------------------- ; Function ch_data_in_transfer_n ; --------------------------------- diff --git a/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s b/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s index 3060aa9c..baa56e99 100644 --- a/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s +++ b/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s @@ -48,7 +48,7 @@ _USB_MODULE_LEDS .EQU 0xff8a ;-------------------------------------------------------- ; code ;-------------------------------------------------------- -;source-doc/base-drv/dev_transfers.c:24: * See https://www.beyondlogic.org/usbnutshell/usb4.shtml for a description of the USB control transfer +;source-doc/base-drv/dev_transfers.c:23: * See https://www.beyondlogic.org/usbnutshell/usb4.shtml for a description of the USB control transfer ; --------------------------------- ; Function usbdev_control_transfer ; --------------------------------- @@ -56,7 +56,7 @@ _usbdev_control_transfer: push ix ld ix,0 add ix,sp -;source-doc/base-drv/dev_transfers.c:25: * +;source-doc/base-drv/dev_transfers.c:24: * ld l,(ix+4) ld h,(ix+5) ld e,l @@ -82,10 +82,10 @@ _usbdev_control_transfer: pop af pop af pop af -;source-doc/base-drv/dev_transfers.c:26: * @param device the usb device +;source-doc/base-drv/dev_transfers.c:25: * @param device the usb device pop ix ret -;source-doc/base-drv/dev_transfers.c:28: * @param buffer Pointer of data to send or receive into +;source-doc/base-drv/dev_transfers.c:27: * @param buffer Pointer of data to send or receive into ; --------------------------------- ; Function usbdev_blk_out_trnsfer ; --------------------------------- @@ -95,13 +95,13 @@ _usbdev_blk_out_trnsfer: add ix,sp push af push af -;source-doc/base-drv/dev_transfers.c:30: */ +;source-doc/base-drv/dev_transfers.c:29: */ ld e,(ix+4) ld d,(ix+5) ld hl,0x0003 add hl, de ex (sp), hl -;source-doc/base-drv/dev_transfers.c:32: return usb_control_transfer(cmd_packet, buffer, device->address, device->max_packet_size); +;source-doc/base-drv/dev_transfers.c:31: return usb_control_transfer(cmd_packet, buffer, device->address, device->max_packet_size); ld (ix-2),e ld (ix-1),d pop bc @@ -134,12 +134,12 @@ _usbdev_blk_out_trnsfer: pop de ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:34: +;source-doc/base-drv/dev_transfers.c:33: ld hl,_result ld a, (hl) sub 0x02 jr NZ,l_usbdev_blk_out_trnsfer_00102 -;source-doc/base-drv/dev_transfers.c:35: usb_error usbdev_blk_out_trnsfer(device_config *const dev, const uint8_t *const buffer, const uint16_t buffer_size) { +;source-doc/base-drv/dev_transfers.c:34: usb_error usbdev_blk_out_trnsfer(device_config *const dev, const uint8_t *const buffer, const uint16_t buffer_size) { ex de, hl inc hl ld d, (hl) @@ -164,23 +164,23 @@ _usbdev_blk_out_trnsfer: call _usbtrn_clear_endpoint_halt pop af inc sp -;source-doc/base-drv/dev_transfers.c:36: +;source-doc/base-drv/dev_transfers.c:35: pop hl push hl res 0, (hl) -;source-doc/base-drv/dev_transfers.c:37: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_OUT]; +;source-doc/base-drv/dev_transfers.c:36: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_OUT]; ld l,0x02 jr l_usbdev_blk_out_trnsfer_00104 l_usbdev_blk_out_trnsfer_00102: -;source-doc/base-drv/dev_transfers.c:40: -;source-doc/base-drv/dev_transfers.c:43: endpoint->toggle = 0; +;source-doc/base-drv/dev_transfers.c:39: +;source-doc/base-drv/dev_transfers.c:42: endpoint->toggle = 0; ld hl, (_result) l_usbdev_blk_out_trnsfer_00104: -;source-doc/base-drv/dev_transfers.c:44: return USB_ERR_STALL; +;source-doc/base-drv/dev_transfers.c:43: return USB_ERR_STALL; ld sp, ix pop ix ret -;source-doc/base-drv/dev_transfers.c:46: +;source-doc/base-drv/dev_transfers.c:45: ; --------------------------------- ; Function usbdev_bulk_in_transfer ; --------------------------------- @@ -190,13 +190,13 @@ _usbdev_bulk_in_transfer: add ix,sp push af push af -;source-doc/base-drv/dev_transfers.c:47: RETURN_CHECK(result); +;source-doc/base-drv/dev_transfers.c:46: RETURN_CHECK(result); ld e,(ix+4) ld d,(ix+5) ld hl,0x0006 add hl, de ex (sp), hl -;source-doc/base-drv/dev_transfers.c:49: done: +;source-doc/base-drv/dev_transfers.c:48: done: ld (ix-2),e ld (ix-1),d pop bc @@ -229,12 +229,12 @@ _usbdev_bulk_in_transfer: pop de ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:51: } +;source-doc/base-drv/dev_transfers.c:50: } ld hl,_result ld a, (hl) sub 0x02 jr NZ,l_usbdev_bulk_in_transfer_00102 -;source-doc/base-drv/dev_transfers.c:52: +;source-doc/base-drv/dev_transfers.c:51: ex de, hl inc hl ld d, (hl) @@ -259,23 +259,23 @@ _usbdev_bulk_in_transfer: call _usbtrn_clear_endpoint_halt pop af inc sp -;source-doc/base-drv/dev_transfers.c:53: usb_error usbdev_bulk_in_transfer(device_config *const dev, uint8_t *const buffer, uint8_t *const buffer_size) { +;source-doc/base-drv/dev_transfers.c:52: usb_error usbdev_bulk_in_transfer(device_config *const dev, uint8_t *const buffer, uint8_t *const buffer_size) { pop hl push hl res 0, (hl) -;source-doc/base-drv/dev_transfers.c:54: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_IN]; +;source-doc/base-drv/dev_transfers.c:53: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_IN]; ld l,0x02 jr l_usbdev_bulk_in_transfer_00104 l_usbdev_bulk_in_transfer_00102: -;source-doc/base-drv/dev_transfers.c:57: -;source-doc/base-drv/dev_transfers.c:59: usbtrn_clear_endpoint_halt(endpoint->number, dev->address, dev->max_packet_size); +;source-doc/base-drv/dev_transfers.c:56: +;source-doc/base-drv/dev_transfers.c:58: usbtrn_clear_endpoint_halt(endpoint->number, dev->address, dev->max_packet_size); ld hl, (_result) l_usbdev_bulk_in_transfer_00104: -;source-doc/base-drv/dev_transfers.c:60: endpoint->toggle = 0; +;source-doc/base-drv/dev_transfers.c:59: endpoint->toggle = 0; ld sp, ix pop ix ret -;source-doc/base-drv/dev_transfers.c:62: } +;source-doc/base-drv/dev_transfers.c:61: } ; --------------------------------- ; Function usbdev_dat_in_trnsfer ; --------------------------------- @@ -285,7 +285,7 @@ _usbdev_dat_in_trnsfer: add ix,sp push af push af -;source-doc/base-drv/dev_transfers.c:67: } +;source-doc/base-drv/dev_transfers.c:66: } ld e,(ix+4) ld d,(ix+5) ld c, e @@ -304,7 +304,7 @@ _usbdev_dat_in_trnsfer: ld a,0x00 adc a, b ld (ix-3),a -;source-doc/base-drv/dev_transfers.c:69: usb_error usbdev_dat_in_trnsfer(device_config *const device, +;source-doc/base-drv/dev_transfers.c:68: usb_error usbdev_dat_in_trnsfer(device_config *const device, ld (ix-2),e ld (ix-1),d pop bc @@ -337,12 +337,12 @@ _usbdev_dat_in_trnsfer: pop de ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:71: const uint16_t buffer_size, +;source-doc/base-drv/dev_transfers.c:70: const uint16_t buffer_size, ld hl,_result ld a, (hl) sub 0x02 jr NZ,l_usbdev_dat_in_trnsfer_00102 -;source-doc/base-drv/dev_transfers.c:72: const usb_endpoint_type endpoint_type) { +;source-doc/base-drv/dev_transfers.c:71: const usb_endpoint_type endpoint_type) { ex de, hl inc hl ld d, (hl) @@ -367,23 +367,23 @@ _usbdev_dat_in_trnsfer: call _usbtrn_clear_endpoint_halt pop af inc sp -;source-doc/base-drv/dev_transfers.c:73: +;source-doc/base-drv/dev_transfers.c:72: pop hl push hl res 0, (hl) -;source-doc/base-drv/dev_transfers.c:74: endpoint_param *const endpoint = &device->endpoints[endpoint_type]; +;source-doc/base-drv/dev_transfers.c:73: endpoint_param *const endpoint = &device->endpoints[endpoint_type]; ld l,0x02 jr l_usbdev_dat_in_trnsfer_00104 l_usbdev_dat_in_trnsfer_00102: -;source-doc/base-drv/dev_transfers.c:77: -;source-doc/base-drv/dev_transfers.c:79: usbtrn_clear_endpoint_halt(endpoint->number, device->address, device->max_packet_size); +;source-doc/base-drv/dev_transfers.c:76: +;source-doc/base-drv/dev_transfers.c:78: usbtrn_clear_endpoint_halt(endpoint->number, device->address, device->max_packet_size); ld hl, (_result) l_usbdev_dat_in_trnsfer_00104: -;source-doc/base-drv/dev_transfers.c:80: endpoint->toggle = 0; +;source-doc/base-drv/dev_transfers.c:79: endpoint->toggle = 0; ld sp, ix pop ix ret -;source-doc/base-drv/dev_transfers.c:82: } +;source-doc/base-drv/dev_transfers.c:81: } ; --------------------------------- ; Function usbdev_dat_in_trnsfer_0 ; --------------------------------- @@ -393,13 +393,13 @@ _usbdev_dat_in_trnsfer_0: add ix,sp push af push af -;source-doc/base-drv/dev_transfers.c:83: +;source-doc/base-drv/dev_transfers.c:82: ld e,(ix+4) ld d,(ix+5) ld hl,0x0003 add hl, de ex (sp), hl -;source-doc/base-drv/dev_transfers.c:85: done: +;source-doc/base-drv/dev_transfers.c:84: done: ld (ix-2),e ld (ix-1),d pop bc @@ -432,12 +432,12 @@ _usbdev_dat_in_trnsfer_0: pop de ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:87: } +;source-doc/base-drv/dev_transfers.c:86: } ld hl,_result ld a, (hl) sub 0x02 jr NZ,l_usbdev_dat_in_trnsfer_0_00102 -;source-doc/base-drv/dev_transfers.c:88: +;source-doc/base-drv/dev_transfers.c:87: ex de, hl inc hl ld d, (hl) @@ -462,18 +462,18 @@ _usbdev_dat_in_trnsfer_0: call _usbtrn_clear_endpoint_halt pop af inc sp -;source-doc/base-drv/dev_transfers.c:89: usb_error usbdev_dat_in_trnsfer_0(device_config *const device, uint8_t *const buffer, const uint8_t buffer_size) { +;source-doc/base-drv/dev_transfers.c:88: usb_error usbdev_dat_in_trnsfer_0(device_config *const device, uint8_t *const buffer, const uint8_t buffer_size) { pop hl push hl res 0, (hl) -;source-doc/base-drv/dev_transfers.c:90: endpoint_param *const endpoint = &device->endpoints[0]; +;source-doc/base-drv/dev_transfers.c:89: endpoint_param *const endpoint = &device->endpoints[0]; ld l,0x02 jr l_usbdev_dat_in_trnsfer_0_00103 l_usbdev_dat_in_trnsfer_0_00102: -;source-doc/base-drv/dev_transfers.c:93: +;source-doc/base-drv/dev_transfers.c:92: ld hl, (_result) l_usbdev_dat_in_trnsfer_0_00103: -;source-doc/base-drv/dev_transfers.c:94: if (result == USB_ERR_STALL) { +;source-doc/base-drv/dev_transfers.c:93: if (result == USB_ERR_STALL) { ld sp, ix pop ix ret diff --git a/Source/HBIOS/ch376-native/base-drv/enumerate_hub.c.s b/Source/HBIOS/ch376-native/base-drv/enumerate_hub.c.s index 958d7061..061b599a 100644 --- a/Source/HBIOS/ch376-native/base-drv/enumerate_hub.c.s +++ b/Source/HBIOS/ch376-native/base-drv/enumerate_hub.c.s @@ -333,11 +333,9 @@ l_configure_usb_hub_00126: pop bc or a jp NZ, l_configure_usb_hub_00129 -;source-doc/base-drv/enumerate_hub.c:61: if (port_status.wPortStatus.port_connection) { - ld hl,8 - add hl, sp - ld a, (hl) - and 0x01 +;source-doc/base-drv/enumerate_hub.c:61: if (port_status.wPortStatus & PORT_STAT_CONNECTION) { + ld e,(ix-6) + bit 0, e jr Z,l_configure_usb_hub_00124 ;source-doc/base-drv/enumerate_hub.c:62: CHECK(hub_clear_feature(hub_config, HUB_FEATURE_PORT_CONNECTION_CHA, i)); push bc diff --git a/Source/HBIOS/ch376-native/base-drv/transfers.c.s b/Source/HBIOS/ch376-native/base-drv/transfers.c.s index 47e2cfb1..a7e24d4e 100644 --- a/Source/HBIOS/ch376-native/base-drv/transfers.c.s +++ b/Source/HBIOS/ch376-native/base-drv/transfers.c.s @@ -48,7 +48,7 @@ _USB_MODULE_LEDS .EQU 0xff8a ;-------------------------------------------------------- ; code ;-------------------------------------------------------- -;source-doc/base-drv/transfers.c:23: +;source-doc/base-drv/transfers.c:22: ; --------------------------------- ; Function usb_ctrl_trnsfer_ext ; --------------------------------- @@ -56,26 +56,26 @@ _usb_ctrl_trnsfer_ext: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:27: const uint8_t max_packet_size) { +;source-doc/base-drv/transfers.c:26: const uint8_t max_packet_size) { ld a,(ix+5) sub 0x80 jr NC,l_usb_ctrl_trnsfer_ext_00102 -;source-doc/base-drv/transfers.c:28: if ((uint16_t)cmd_packet < LOWER_SAFE_RAM_ADDRESS) +;source-doc/base-drv/transfers.c:27: if ((uint16_t)cmd_packet < LOWER_SAFE_RAM_ADDRESS) ld l,0x82 jr l_usb_ctrl_trnsfer_ext_00106 l_usb_ctrl_trnsfer_ext_00102: -;source-doc/base-drv/transfers.c:30: +;source-doc/base-drv/transfers.c:29: ld a,(ix+7) or (ix+6) jr Z,l_usb_ctrl_trnsfer_ext_00104 ld a,(ix+7) sub 0x80 jr NC,l_usb_ctrl_trnsfer_ext_00104 -;source-doc/base-drv/transfers.c:31: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) +;source-doc/base-drv/transfers.c:30: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) ld l,0x82 jr l_usb_ctrl_trnsfer_ext_00106 l_usb_ctrl_trnsfer_ext_00104: -;source-doc/base-drv/transfers.c:33: +;source-doc/base-drv/transfers.c:32: ld h,(ix+9) ld l,(ix+8) push hl @@ -90,10 +90,10 @@ l_usb_ctrl_trnsfer_ext_00104: pop af pop af l_usb_ctrl_trnsfer_ext_00106: -;source-doc/base-drv/transfers.c:34: return usb_control_transfer(cmd_packet, buffer, device_address, max_packet_size); +;source-doc/base-drv/transfers.c:33: return usb_control_transfer(cmd_packet, buffer, device_address, max_packet_size); pop ix ret -;source-doc/base-drv/transfers.c:38: * @brief Perform a USB control transfer (in or out) +;source-doc/base-drv/transfers.c:37: * @brief Perform a USB control transfer (in or out) ; --------------------------------- ; Function usb_control_transfer ; --------------------------------- @@ -103,7 +103,7 @@ _usb_control_transfer: add ix,sp push af push af -;source-doc/base-drv/transfers.c:43: * @param device_address usb device address +;source-doc/base-drv/transfers.c:42: * @param device_address usb device address ld hl,0 add hl, sp set 0, (hl) @@ -125,30 +125,30 @@ _usb_control_transfer: and 0xfc or e ld (hl), a -;source-doc/base-drv/transfers.c:45: * @return usb_error USB_ERR_OK if all good, otherwise specific error code +;source-doc/base-drv/transfers.c:44: * @return usb_error USB_ERR_OK if all good, otherwise specific error code ld c,(ix+4) ld b,(ix+5) ld a, (bc) and 0x80 -;source-doc/base-drv/transfers.c:47: usb_error usb_control_transfer(const setup_packet *const cmd_packet, +;source-doc/base-drv/transfers.c:46: usb_error usb_control_transfer(const setup_packet *const cmd_packet, ld (ix-1),a or a jr Z,l_usb_control_transfer_00102 ld a,(ix+7) or (ix+6) jr NZ,l_usb_control_transfer_00102 -;source-doc/base-drv/transfers.c:48: void *const buffer, +;source-doc/base-drv/transfers.c:47: void *const buffer, ld l,0x0f jp l_usb_control_transfer_00114 l_usb_control_transfer_00102: -;source-doc/base-drv/transfers.c:50: const uint8_t max_packet_size) { +;source-doc/base-drv/transfers.c:49: const uint8_t max_packet_size) { push bc call _critical_begin -;source-doc/base-drv/transfers.c:52: endpoint_param endpoint = {1, 0, max_packet_size}; +;source-doc/base-drv/transfers.c:51: endpoint_param endpoint = {1, 0, max_packet_size}; ld l,(ix+8) call _ch_set_usb_address pop bc -;source-doc/base-drv/transfers.c:54: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); +;source-doc/base-drv/transfers.c:53: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); ld e,(ix+4) ld d,(ix+5) push bc @@ -159,21 +159,21 @@ l_usb_control_transfer_00102: call _ch_write_data pop af inc sp -;source-doc/base-drv/transfers.c:55: +;source-doc/base-drv/transfers.c:54: call _ch_issue_token_setup -;source-doc/base-drv/transfers.c:56: if (transferIn && buffer == 0) +;source-doc/base-drv/transfers.c:55: if (transferIn && buffer == 0) call _ch_short_wait_int_and_get_stat pop bc -;source-doc/base-drv/transfers.c:57: return USB_ERR_OTHER; +;source-doc/base-drv/transfers.c:56: return USB_ERR_OTHER; ld a, l or a jr NZ,l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:59: critical_begin(); +;source-doc/base-drv/transfers.c:58: critical_begin(); ld hl,6 add hl, bc ld c, (hl) inc hl -;source-doc/base-drv/transfers.c:62: +;source-doc/base-drv/transfers.c:61: ld a,(hl) ld b,a or c @@ -204,58 +204,58 @@ l_usb_control_transfer_00118: l_usb_control_transfer_00119: jr l_usb_control_transfer_00117 l_usb_control_transfer_00116: -;source-doc/base-drv/transfers.c:63: ch_write_data((const uint8_t *)cmd_packet, sizeof(setup_packet)); +;source-doc/base-drv/transfers.c:62: ch_write_data((const uint8_t *)cmd_packet, sizeof(setup_packet)); ld l,0x00 l_usb_control_transfer_00117: -;source-doc/base-drv/transfers.c:65: result = ch_short_wait_int_and_get_statu(); +;source-doc/base-drv/transfers.c:64: result = ch_short_wait_int_and_get_statu(); ld a, l or a jr NZ,l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:67: +;source-doc/base-drv/transfers.c:66: ld a,(ix-1) or a jr Z,l_usb_control_transfer_00112 -;source-doc/base-drv/transfers.c:68: const uint16_t length = cmd_packet->wLength; +;source-doc/base-drv/transfers.c:67: const uint16_t length = cmd_packet->wLength; ld l,0x2c call _ch_command -;source-doc/base-drv/transfers.c:69: +;source-doc/base-drv/transfers.c:68: ld a,0x00 ld bc,_CH376_DATA_PORT out (c), a -;source-doc/base-drv/transfers.c:70: result = length != 0 +;source-doc/base-drv/transfers.c:69: result = length != 0 call _ch_issue_token_out_ep0 -;source-doc/base-drv/transfers.c:71: ? (transferIn ? ch_data_in_transfer(buffer, length, &endpoint) : ch_data_out_transfer(buffer, length, &endpoint)) +;source-doc/base-drv/transfers.c:70: ? (transferIn ? ch_data_in_transfer(buffer, length, &endpoint) : ch_data_out_transfer(buffer, length, &endpoint)) call _ch_long_wait_int_and_get_statu -;source-doc/base-drv/transfers.c:73: +;source-doc/base-drv/transfers.c:72: ld a,l or a jr Z,l_usb_control_transfer_00108 sub 0x02 jr NZ,l_usb_control_transfer_00113 l_usb_control_transfer_00108: -;source-doc/base-drv/transfers.c:74: CHECK(result) +;source-doc/base-drv/transfers.c:73: CHECK(result) ld l,0x00 -;source-doc/base-drv/transfers.c:75: +;source-doc/base-drv/transfers.c:74: jr l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:78: CH376_DATA_PORT = 0; +;source-doc/base-drv/transfers.c:77: CH376_DATA_PORT = 0; l_usb_control_transfer_00112: -;source-doc/base-drv/transfers.c:81: +;source-doc/base-drv/transfers.c:80: call _ch_issue_token_in_ep0 -;source-doc/base-drv/transfers.c:82: if (result == USB_ERR_OK || result == USB_ERR_STALL) { +;source-doc/base-drv/transfers.c:81: if (result == USB_ERR_OK || result == USB_ERR_STALL) { call _ch_long_wait_int_and_get_statu -;source-doc/base-drv/transfers.c:86: +;source-doc/base-drv/transfers.c:85: l_usb_control_transfer_00113: -;source-doc/base-drv/transfers.c:87: RETURN_CHECK(result); +;source-doc/base-drv/transfers.c:86: RETURN_CHECK(result); push hl call _critical_end pop hl -;source-doc/base-drv/transfers.c:88: } +;source-doc/base-drv/transfers.c:87: } l_usb_control_transfer_00114: -;source-doc/base-drv/transfers.c:89: +;source-doc/base-drv/transfers.c:88: ld sp, ix pop ix ret -;source-doc/base-drv/transfers.c:92: +;source-doc/base-drv/transfers.c:91: ; --------------------------------- ; Function usb_dat_in_trnsfer_ext ; --------------------------------- @@ -263,26 +263,26 @@ _usb_dat_in_trnsfer_ext: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:93: RETURN_CHECK(result); +;source-doc/base-drv/transfers.c:92: RETURN_CHECK(result); ld a,(ix+5) or (ix+4) jr Z,l_usb_dat_in_trnsfer_ext_00102 ld a,(ix+5) sub 0x80 jr NC,l_usb_dat_in_trnsfer_ext_00102 -;source-doc/base-drv/transfers.c:94: +;source-doc/base-drv/transfers.c:93: ld l,0x82 jr l_usb_dat_in_trnsfer_ext_00106 l_usb_dat_in_trnsfer_ext_00102: -;source-doc/base-drv/transfers.c:96: critical_end(); +;source-doc/base-drv/transfers.c:95: critical_end(); ld a,(ix+10) sub 0x80 jr NC,l_usb_dat_in_trnsfer_ext_00105 -;source-doc/base-drv/transfers.c:97: return result; +;source-doc/base-drv/transfers.c:96: return result; ld l,0x82 jr l_usb_dat_in_trnsfer_ext_00106 l_usb_dat_in_trnsfer_ext_00105: -;source-doc/base-drv/transfers.c:99: +;source-doc/base-drv/transfers.c:98: ld l,(ix+9) ld h,(ix+10) push hl @@ -301,67 +301,10 @@ l_usb_dat_in_trnsfer_ext_00105: pop af inc sp l_usb_dat_in_trnsfer_ext_00106: -;source-doc/base-drv/transfers.c:100: usb_error +;source-doc/base-drv/transfers.c:99: usb_error pop ix ret -;source-doc/base-drv/transfers.c:103: return USB_BAD_ADDRESS; -; --------------------------------- -; Function usb_dat_in_trns_n_ext -; --------------------------------- -_usb_dat_in_trns_n_ext: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:104: - ld a,(ix+5) - or (ix+4) - jr Z,l_usb_dat_in_trns_n_ext_00102 - ld a,(ix+5) - and 0xc0 - jr NZ,l_usb_dat_in_trns_n_ext_00102 -;source-doc/base-drv/transfers.c:105: if ((uint16_t)endpoint < LOWER_SAFE_RAM_ADDRESS) - ld l,0x82 - jr l_usb_dat_in_trns_n_ext_00108 -l_usb_dat_in_trns_n_ext_00102: -;source-doc/base-drv/transfers.c:107: - ld a,(ix+10) - and 0xc0 - jr NZ,l_usb_dat_in_trns_n_ext_00105 -;source-doc/base-drv/transfers.c:108: return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); - ld l,0x82 - jr l_usb_dat_in_trns_n_ext_00108 -l_usb_dat_in_trns_n_ext_00105: -;source-doc/base-drv/transfers.c:110: - ld a,(ix+7) - and 0xc0 - jr NZ,l_usb_dat_in_trns_n_ext_00107 -;source-doc/base-drv/transfers.c:111: usb_error - ld l,0x82 - jr l_usb_dat_in_trns_n_ext_00108 -l_usb_dat_in_trns_n_ext_00107: -;source-doc/base-drv/transfers.c:113: if (buffer != 0 && ((uint16_t)buffer & 0xC000) == 0) - ld c,(ix+6) - ld b,(ix+7) - ld l,(ix+9) - ld h,(ix+10) - push hl - ld a,(ix+8) - push af - inc sp - push bc - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usb_data_in_transfer_n - pop af - pop af - pop af - inc sp -l_usb_dat_in_trns_n_ext_00108: -;source-doc/base-drv/transfers.c:114: return USB_BAD_ADDRESS; - pop ix - ret -;source-doc/base-drv/transfers.c:119: if (((uint16_t)buffer_size & 0xC000) == 0) +;source-doc/base-drv/transfers.c:104: if ((uint16_t)endpoint < LOWER_SAFE_RAM_ADDRESS) ; --------------------------------- ; Function usb_data_in_transfer ; --------------------------------- @@ -369,12 +312,12 @@ _usb_data_in_transfer: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:120: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:105: return USB_BAD_ADDRESS; call _critical_begin -;source-doc/base-drv/transfers.c:122: return usb_data_in_transfer_n(buffer, buffer_size, device_address, endpoint); +;source-doc/base-drv/transfers.c:107: return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); ld l,(ix+8) call _ch_set_usb_address -;source-doc/base-drv/transfers.c:124: +;source-doc/base-drv/transfers.c:109: ld l,(ix+9) ld h,(ix+10) push hl @@ -390,14 +333,14 @@ _usb_data_in_transfer: pop af ld a, l ld (_result), a -;source-doc/base-drv/transfers.c:126: * @brief Perform a USB data in on the specififed endpoint +;source-doc/base-drv/transfers.c:111: * @brief Perform a USB data in on the specififed endpoint call _critical_end -;source-doc/base-drv/transfers.c:128: * @param buffer the buffer to receive the data +;source-doc/base-drv/transfers.c:113: * @param buffer the buffer to receive the data ld hl, (_result) -;source-doc/base-drv/transfers.c:129: * @param buffer_size the maximum size of data to be received +;source-doc/base-drv/transfers.c:114: * @param buffer_size the maximum size of data to be received pop ix ret -;source-doc/base-drv/transfers.c:134: usb_error +;source-doc/base-drv/transfers.c:119: usb_error ; --------------------------------- ; Function usb_data_in_transfer_n ; --------------------------------- @@ -405,12 +348,12 @@ _usb_data_in_transfer_n: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:135: usb_data_in_transfer(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { +;source-doc/base-drv/transfers.c:120: usb_data_in_transfer(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { call _critical_begin -;source-doc/base-drv/transfers.c:137: +;source-doc/base-drv/transfers.c:122: ld l,(ix+8) call _ch_set_usb_address -;source-doc/base-drv/transfers.c:139: +;source-doc/base-drv/transfers.c:124: ld l,(ix+9) ld h,(ix+10) push hl @@ -426,14 +369,14 @@ _usb_data_in_transfer_n: pop af ld a, l ld (_result), a -;source-doc/base-drv/transfers.c:141: +;source-doc/base-drv/transfers.c:126: call _critical_end -;source-doc/base-drv/transfers.c:143: +;source-doc/base-drv/transfers.c:128: ld hl, (_result) -;source-doc/base-drv/transfers.c:144: return result; +;source-doc/base-drv/transfers.c:129: return result; pop ix ret -;source-doc/base-drv/transfers.c:149: * +;source-doc/base-drv/transfers.c:134: * ; --------------------------------- ; Function usb_data_out_transfer ; --------------------------------- @@ -441,12 +384,12 @@ _usb_data_out_transfer: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:150: * @param buffer the buffer to receive the data - must be 62 bytes +;source-doc/base-drv/transfers.c:135: * @param buffer the buffer to receive the data - must be 62 bytes call _critical_begin -;source-doc/base-drv/transfers.c:152: * @param device_address the usb address of the device +;source-doc/base-drv/transfers.c:137: * @param device_address the usb address of the device ld l,(ix+8) call _ch_set_usb_address -;source-doc/base-drv/transfers.c:154: * @return usb_error USB_ERR_OK if all good, otherwise specific error code +;source-doc/base-drv/transfers.c:139: * @return usb_error USB_ERR_OK if all good, otherwise specific error code ld l,(ix+9) ld h,(ix+10) push hl @@ -462,10 +405,10 @@ _usb_data_out_transfer: pop af ld a, l ld (_result), a -;source-doc/base-drv/transfers.c:156: usb_error +;source-doc/base-drv/transfers.c:141: usb_error call _critical_end -;source-doc/base-drv/transfers.c:158: critical_begin(); +;source-doc/base-drv/transfers.c:143: critical_begin(); ld hl, (_result) -;source-doc/base-drv/transfers.c:159: +;source-doc/base-drv/transfers.c:144: pop ix ret diff --git a/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s b/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s index 5ebcdd96..d343f3af 100644 --- a/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s +++ b/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.s @@ -68,14 +68,14 @@ _usb_host_bus_reset: call _ch_cmd_set_usb_mode ;source-doc/base-drv/usb-base-drv.c:15: delay_20ms(); call _delay_20ms -;source-doc/base-drv/ch376.h:111: #endif +;source-doc/base-drv/ch376.h:111: ld l,0x0b call _ch_command -;source-doc/base-drv/ch376.h:112: +;source-doc/base-drv/ch376.h:112: #endif ld a,0x25 ld bc,_CH376_DATA_PORT out (c), a -;source-doc/base-drv/ch376.h:113: #define calc_max_packet_sizex(packet_size) (packet_size & 0x3FF) +;source-doc/base-drv/ch376.h:113: ld a,0xdf ld bc,_CH376_DATA_PORT out (c), a @@ -201,7 +201,7 @@ l_usb_init_00112: l_usb_init_00113: ;source-doc/base-drv/usb-base-drv.c:69: } ret -;source-doc/base-drv/usb-base-drv.c:71: uint8_t usb_scsi_seek(const uint16_t dev_index, const uint32_t lba) { +;source-doc/base-drv/usb-base-drv.c:71: usb_error usb_scsi_seek(const uint16_t dev_index, const uint32_t lba) { ; --------------------------------- ; Function usb_scsi_seek ; --------------------------------- @@ -220,7 +220,7 @@ _usb_scsi_seek: add hl, sp ld bc,0x0004 ldir -;source-doc/base-drv/usb-base-drv.c:75: return 0; +;source-doc/base-drv/usb-base-drv.c:75: return USB_ERR_OK; ld l,0x00 ;source-doc/base-drv/usb-base-drv.c:76: } pop ix diff --git a/Source/HBIOS/ch376-native/base-drv/usb_state.c.s b/Source/HBIOS/ch376-native/base-drv/usb_state.c.s index 4fdc511a..12167692 100644 --- a/Source/HBIOS/ch376-native/base-drv/usb_state.c.s +++ b/Source/HBIOS/ch376-native/base-drv/usb_state.c.s @@ -187,14 +187,14 @@ l_next_device_config_00102: l_next_device_config_00105: ;source-doc/base-drv/usb_state.c:72: } ret -;source-doc/base-drv/usb_state.c:75: device_config *get_usb_device_config(const uint8_t device_index) __sdcccall(1) { +;source-doc/base-drv/usb_state.c:74: device_config *get_usb_device_config(const uint8_t device_index) __sdcccall(1) { ; --------------------------------- ; Function get_usb_device_config ; --------------------------------- _get_usb_device_config: ld c, a -;source-doc/base-drv/usb_state.c:76: const _usb_state *const usb_state = get_usb_work_area(); -;source-doc/base-drv/usb_state.c:80: for (device_config *p = first_device_config(usb_state); p; p = next_device_config(usb_state, p)) { +;source-doc/base-drv/usb_state.c:75: const _usb_state *const usb_state = get_usb_work_area(); +;source-doc/base-drv/usb_state.c:79: for (device_config *p = first_device_config(usb_state); p; p = next_device_config(usb_state, p)) { push bc ld hl,_x call _first_device_config @@ -204,33 +204,33 @@ l_get_usb_device_config_00107: ld a, d or e jr Z,l_get_usb_device_config_00105 -;source-doc/base-drv/usb_state.c:81: if (p->type != USB_NOT_SUPPORTED) { +;source-doc/base-drv/usb_state.c:80: if (p->type != USB_NOT_SUPPORTED) { ld l, e ld h, d ld a, (hl) and 0x0f jr Z,l_get_usb_device_config_00108 -;source-doc/base-drv/usb_state.c:82: if (counter == device_index) +;source-doc/base-drv/usb_state.c:81: if (counter == device_index) ld a, c sub b -;source-doc/base-drv/usb_state.c:83: return p; +;source-doc/base-drv/usb_state.c:82: return p; jr Z,l_get_usb_device_config_00109 -;source-doc/base-drv/usb_state.c:84: counter++; +;source-doc/base-drv/usb_state.c:83: counter++; inc b l_get_usb_device_config_00108: -;source-doc/base-drv/usb_state.c:80: for (device_config *p = first_device_config(usb_state); p; p = next_device_config(usb_state, p)) { +;source-doc/base-drv/usb_state.c:79: for (device_config *p = first_device_config(usb_state); p; p = next_device_config(usb_state, p)) { push bc ld hl,_x call _next_device_config pop bc jr l_get_usb_device_config_00107 l_get_usb_device_config_00105: -;source-doc/base-drv/usb_state.c:88: return NULL; // is not a usb device +;source-doc/base-drv/usb_state.c:87: return NULL; // is not a usb device ld de,0x0000 l_get_usb_device_config_00109: -;source-doc/base-drv/usb_state.c:89: } +;source-doc/base-drv/usb_state.c:88: } ret -;source-doc/base-drv/usb_state.c:91: usb_device_type get_usb_device_type(const uint8_t dev_index) { +;source-doc/base-drv/usb_state.c:90: usb_device_type get_usb_device_type(const uint8_t dev_index) { ; --------------------------------- ; Function get_usb_device_type ; --------------------------------- @@ -238,24 +238,24 @@ _get_usb_device_type: push ix ld ix,0 add ix,sp -;source-doc/base-drv/usb_state.c:92: const device_config *dev = get_usb_device_config(dev_index); +;source-doc/base-drv/usb_state.c:91: const device_config *dev = get_usb_device_config(dev_index); ld a,(ix+4) call _get_usb_device_config ld l, e -;source-doc/base-drv/usb_state.c:94: if (dev == NULL) +;source-doc/base-drv/usb_state.c:93: if (dev == NULL) ld a,d ld h,a or e jr NZ,l_get_usb_device_type_00102 -;source-doc/base-drv/usb_state.c:95: return -1; +;source-doc/base-drv/usb_state.c:94: return -1; ld l,0xff jr l_get_usb_device_type_00103 l_get_usb_device_type_00102: -;source-doc/base-drv/usb_state.c:97: return dev->type; +;source-doc/base-drv/usb_state.c:96: return dev->type; ld a, (hl) and 0x0f ld l, a l_get_usb_device_type_00103: -;source-doc/base-drv/usb_state.c:98: } +;source-doc/base-drv/usb_state.c:97: } pop ix ret diff --git a/Source/HBIOS/ch376-native/keyboard/kyb_driver.c.s b/Source/HBIOS/ch376-native/keyboard/kyb_driver.c.s index 0ede7fe4..f262150b 100644 --- a/Source/HBIOS/ch376-native/keyboard/kyb_driver.c.s +++ b/Source/HBIOS/ch376-native/keyboard/kyb_driver.c.s @@ -358,14 +358,14 @@ _usb_kyb_tick: or a ;source-doc/keyboard/kyb_driver.c:120: if (is_in_critical_section()) jr NZ,l_usb_kyb_tick_00112 -;././source-doc/base-drv//ch376.h:111: #endif +;././source-doc/base-drv//ch376.h:111: ld l,0x0b call _ch_command -;././source-doc/base-drv//ch376.h:112: +;././source-doc/base-drv//ch376.h:112: #endif ld a,0x25 ld bc,_CH376_DATA_PORT out (c), a -;././source-doc/base-drv//ch376.h:113: #define calc_max_packet_sizex(packet_size) (packet_size & 0x3FF) +;././source-doc/base-drv//ch376.h:113: ld a,0x1f ld bc,_CH376_DATA_PORT out (c), a @@ -383,14 +383,14 @@ _usb_kyb_tick: inc sp ld a, l ld (_result), a -;././source-doc/base-drv//ch376.h:111: #endif +;././source-doc/base-drv//ch376.h:111: ld l,0x0b call _ch_command -;././source-doc/base-drv//ch376.h:112: +;././source-doc/base-drv//ch376.h:112: #endif ld a,0x25 ld bc,_CH376_DATA_PORT out (c), a -;././source-doc/base-drv//ch376.h:113: #define calc_max_packet_sizex(packet_size) (packet_size & 0x3FF) +;././source-doc/base-drv//ch376.h:113: ld a,0xdf ld bc,_CH376_DATA_PORT out (c), a diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.c b/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.c index 376a5ef2..bf825ee3 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.c @@ -109,7 +109,7 @@ uint8_t ch_probe(void) { return false; } -uint8_t ch_cmd_set_usb_mode(const uint8_t mode) __z88dk_fastcall { +usb_error ch_cmd_set_usb_mode(const uint8_t mode) __z88dk_fastcall { uint8_t result = 0; CH376_COMMAND_PORT = CH_CMD_SET_USB_MODE; @@ -187,7 +187,7 @@ done: } // TODO: review: does buffer_size need to be signed? -usb_error ch_data_in_transfer_n(uint8_t *const buffer, int8_t *const buffer_size, endpoint_param *const endpoint) { +usb_error ch_data_in_transfer_n(uint8_t *const buffer, uint8_t *const buffer_size, endpoint_param *const endpoint) { uint8_t count; usb_error result; diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.h b/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.h index 381e84e1..f9240966 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/ch376.h @@ -4,6 +4,7 @@ #include "ch376inc.h" #include "delay.h" +#include #include typedef enum { @@ -157,7 +158,7 @@ extern usb_error ch_control_transfer_request_descriptor(const uint8_t descriptor extern usb_error ch_control_transfer_set_address(const uint8_t device_address) __z88dk_fastcall; extern usb_error ch_control_transfer_set_config(const uint8_t config_value) __z88dk_fastcall; extern usb_error ch_data_in_transfer(uint8_t *buffer, int16_t data_length, endpoint_param *const endpoint); -extern usb_error ch_data_in_transfer_n(uint8_t *buffer, int8_t *const buffer_size, endpoint_param *const endpoint); +extern usb_error ch_data_in_transfer_n(uint8_t *buffer, uint8_t *const buffer_size, endpoint_param *const endpoint); extern usb_error ch_data_out_transfer(const uint8_t *buffer, int16_t buffer_length, endpoint_param *const endpoint); inline void ch_configure_nak_retry(const ch_nak_retry_type retry, const uint8_t number_of_retries) { diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/class_hub.h b/Source/HBIOS/ch376-native/source-doc/base-drv/class_hub.h index 7d7c75da..73d05184 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/class_hub.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/class_hub.h @@ -36,40 +36,27 @@ typedef struct { } hub_descriptor; typedef struct { - union { - struct { - uint8_t port_connection : 1; - uint8_t port_enable : 1; - uint8_t port_suspend : 1; - uint8_t port_over_current : 1; - uint8_t port_reset : 1; - uint8_t reserved : 3; - uint8_t port_power : 1; - uint8_t port_low_speed : 1; - uint8_t port_high_speed : 1; - uint8_t port_test : 1; - uint8_t port_indicator : 1; - }; - - uint16_t val; - - } wPortStatus; - - union { - struct { - uint8_t c_port_connection : 1; - uint8_t c_port_enable : 1; - uint8_t c_port_suspend : 1; - uint8_t c_port_over_current : 1; - uint8_t c_port_reset : 1; - }; - - uint16_t val; - - } wPortChange; - + uint16_t wPortStatus; + uint16_t wPortChange; } hub_port_status; +#define PORT_STAT_CONNECTION 0x0001 +#define PORT_STAT_ENABLE 0x0002 +#define PORT_STAT_SUSPEND 0x0004 +#define PORT_STAT_OVERCURRENT 0x0008 +#define PORT_STAT_RESET 0x0010 +#define PORT_STAT_POWER 0x0100 +#define PORT_STAT_LOW_SPEED 0x0200 +#define PORT_STAT_HIGH_SPEED 0x0400 +#define PORT_STAT_TEST 0x0800 +#define PORT_STAT_INDICATOR 0x1000 + +#define PORT_STAT_C_CONNECTION 0x0001 +#define PORT_STAT_C_ENABLE 0x0002 +#define PORT_STAT_C_SUSPEND 0x0004 +#define PORT_STAT_C_OVERCURRENT 0x0008 +#define PORT_STAT_C_RESET 0x0010 + usb_error hub_get_descriptor(const device_config_hub *const hub_config, hub_descriptor *const hub_description) __sdcccall(1); #endif diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.c b/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.c index 9abc2988..99e08a5a 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/dev_transfers.c @@ -12,13 +12,12 @@ #include "dev_transfers.h" #include "ch376.h" +#include "critical-section.h" #include "delay.h" +#include "ez80-helpers.h" #include "protocol.h" #include -#include - -#include "ez80-helpers.h" /** * @brief Perform a USB control transfer (in or out) * See https://www.beyondlogic.org/usbnutshell/usb4.shtml for a description of the USB control transfer diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_hub.c b/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_hub.c index d838c452..1db8ddb2 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_hub.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_hub.c @@ -58,7 +58,7 @@ usb_error configure_usb_hub(_working *const working) __z88dk_fastcall { CHECK(hub_get_status_port(hub_config, i, &port_status)); - if (port_status.wPortStatus.port_connection) { + if (port_status.wPortStatus & PORT_STAT_CONNECTION) { CHECK(hub_clear_feature(hub_config, HUB_FEATURE_PORT_CONNECTION_CHANGE, i)); CHECK(hub_clear_feature(hub_config, FEAT_PORT_ENABLE_CHANGE, i)); diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_storage.h b/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_storage.h index 849fa3a4..17f81a8a 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_storage.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/enumerate_storage.h @@ -1,6 +1,7 @@ #ifndef __USB_ENUMERATE_STORAGE #define __USB_ENUMERATE_STORAGE +#include "dev_transfers.h" #include "protocol.h" extern void parse_endpoints(device_config_storage *const storage_dev, const endpoint_descriptor const *pEndpoint); diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/print.h b/Source/HBIOS/ch376-native/source-doc/base-drv/print.h index 480f73f7..df7491b3 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/print.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/print.h @@ -1,6 +1,7 @@ #ifndef __XPRINT #define __XPRINT +#include #include extern void print_hex(const char c) __z88dk_fastcall; diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/transfers.c b/Source/HBIOS/ch376-native/source-doc/base-drv/transfers.c index 2aab410e..5e35afee 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/transfers.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/transfers.c @@ -12,11 +12,10 @@ #include "transfers.h" #include "ch376.h" +#include "critical-section.h" #include "delay.h" #include "ez80-helpers.h" #include "print.h" -#include "z80.h" -#include #include #define LOWER_SAFE_RAM_ADDRESS 0x8000 @@ -108,20 +107,6 @@ usb_dat_in_trnsfer_ext(uint8_t *buffer, const uint16_t buffer_size, const uint8_ return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); } -usb_error -usb_dat_in_trns_n_ext(uint8_t *buffer, uint16_t *buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { - if (buffer != 0 && ((uint16_t)buffer & 0xC000) == 0) - return USB_BAD_ADDRESS; - - if (((uint16_t)endpoint & 0xC000) == 0) - return USB_BAD_ADDRESS; - - if (((uint16_t)buffer_size & 0xC000) == 0) - return USB_BAD_ADDRESS; - - return usb_data_in_transfer_n(buffer, buffer_size, device_address, endpoint); -} - /** * @brief Perform a USB data in on the specififed endpoint * @@ -145,7 +130,7 @@ usb_data_in_transfer(uint8_t *buffer, const uint16_t buffer_size, const uint8_t } /** - * @brief Perform a USB data in on the specififed endpoint + * @brief Perform a USB data in on the specified endpoint * * @param buffer the buffer to receive the data - must be 62 bytes * @param buffer_size on exit the actual size of data received diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c index fb29c190..b809de1d 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.c @@ -68,9 +68,9 @@ uint16_t usb_init(uint8_t state) __z88dk_fastcall { return (uint16_t)count_of_devices() << 8 | 4; } -uint8_t usb_scsi_seek(const uint16_t dev_index, const uint32_t lba) { +usb_error usb_scsi_seek(const uint16_t dev_index, const uint32_t lba) { device_config_storage *const dev = (device_config_storage *)get_usb_device_config(dev_index); dev->current_lba = lba; - return 0; + return USB_ERR_OK; } diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h index 249e894b..a2ab3b1a 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/usb-base-drv.h @@ -1,8 +1,8 @@ #ifndef __USB_BASE_DRV #define __USB_BASE_DRV +#include "dev_transfers.h" #include "usb_state.h" -#include #include extern uint16_t usb_init(uint8_t state) __z88dk_fastcall; diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/usb_state.c b/Source/HBIOS/ch376-native/source-doc/base-drv/usb_state.c index cb16cd19..0824b4ef 100644 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/usb_state.c +++ b/Source/HBIOS/ch376-native/source-doc/base-drv/usb_state.c @@ -71,7 +71,6 @@ device_config *next_device_config(const _usb_state *const usb_state, const devic return result; } -// always usb work area device_config *get_usb_device_config(const uint8_t device_index) __sdcccall(1) { const _usb_state *const usb_state = get_usb_work_area(); diff --git a/Source/HBIOS/ch376-native/source-doc/base-drv/z80.h b/Source/HBIOS/ch376-native/source-doc/base-drv/z80.h deleted file mode 100644 index a086bfeb..00000000 --- a/Source/HBIOS/ch376-native/source-doc/base-drv/z80.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __Z80_HELPERS -#define __Z80_HELPERS - -#include - -#endif