MCPcopy Create free account
hub / github.com/tinygrad/tinygrad / read

Method read

tinygrad/runtime/support/usb.py:278–286  ·  view source on GitHub ↗

Read from chip XDATA via vendor control IN (bRequest=0xE4). wValue=addr, wLength=size.

(self, base_addr:int, length:int, **kwargs)

Source from the content-addressed store, hash-verified

276 # === XDATA read/write (0xE4/0xE5 vendor control transfers) ===
277
278 def read(self, base_addr:int, length:int, **kwargs) -> bytes:
279 """Read from chip XDATA via vendor control IN (bRequest=0xE4). wValue=addr, wLength=size."""
280 result = b''
281 for off in range(0, length, 0xFF):
282 chunk = min(0xFF, length - off)
283 ret = libusb.libusb_control_transfer(self.usb.handle, 0xC0, 0xE4, base_addr + off, 0, self._f0_out_buf, chunk, 1000)
284 assert ret == chunk, f"read(0x{base_addr + off:04X}, {chunk}) failed: {ret}"
285 result += bytes(self._f0_out_buf[:ret])
286 return result[:length]
287
288 def write(self, base_addr:int, data:bytes, **kwargs):
289 """Write to chip XDATA via vendor control OUT (bRequest=0xE5). wValue=addr, wIndex=val."""

Callers 1

__init__Method · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected