DEC Tulip: Revert the changes introduced in build 8078, fixes #6614.

This commit is contained in:
OBattler
2025-12-23 17:53:23 +01:00
parent f827cec0d9
commit 3dd5657dec
2 changed files with 14 additions and 36 deletions

View File

@@ -34,17 +34,8 @@ l80225_mii_readw(uint16_t *regs, uint16_t addr)
return 0;
}
/* Readonly mask for MDI (PHY) registers */
static const uint16_t tulip_mdi_mask[] = {
0x0000, 0xffff, 0xffff, 0xffff, 0xc01f, 0xffff, 0xffff, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0fff, 0x0000, 0xffff, 0xffff, 0x0000, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
void
l80225_mii_writew(uint16_t *regs, uint16_t addr, uint16_t val)
{
regs[addr] = val & tulip_mdi_mask[addr];
regs[addr] = val;
}

View File

@@ -346,10 +346,10 @@ static void
tulip_desc_read(TULIPState *s, uint32_t p,
struct tulip_descriptor *desc)
{
dma_bm_read(p , (uint8_t *) &(desc->status) , 4, 4);
dma_bm_read(p + 4, (uint8_t *) &(desc->control) , 4, 4);
dma_bm_read(p + 8, (uint8_t *) &(desc->buf_addr1), 4, 4);
dma_bm_read(p + 12, (uint8_t *) &(desc->buf_addr2), 4, 4);
desc->status = mem_readl_phys(p);
desc->control = mem_readl_phys(p + 4);
desc->buf_addr1 = mem_readl_phys(p + 8);
desc->buf_addr2 = mem_readl_phys(p + 12);
if (s->csr[0] & CSR0_DBO) {
bswap32s(&desc->status);
@@ -364,20 +364,15 @@ tulip_desc_write(TULIPState *s, uint32_t p,
struct tulip_descriptor *desc)
{
if (s->csr[0] & CSR0_DBO) {
uint32_t status = bswap32(desc->status);
uint32_t control = bswap32(desc->control);
uint32_t buf_addr1 = bswap32(desc->buf_addr1);
uint32_t buf_addr2 = bswap32(desc->buf_addr2);
dma_bm_write(p , (uint8_t *) &status , 4, 4);
dma_bm_write(p + 4, (uint8_t *) &control , 4, 4);
dma_bm_write(p + 8, (uint8_t *) &buf_addr1, 4, 4);
dma_bm_write(p + 12, (uint8_t *) &buf_addr2, 4, 4);
mem_writel_phys(p, bswap32(desc->status));
mem_writel_phys(p + 4, bswap32(desc->control));
mem_writel_phys(p + 8, bswap32(desc->buf_addr1));
mem_writel_phys(p + 12, bswap32(desc->buf_addr2));
} else {
dma_bm_write(p , (uint8_t *) &(desc->status) , 4, 4);
dma_bm_write(p + 4, (uint8_t *) &(desc->control) , 4, 4);
dma_bm_write(p + 8, (uint8_t *) &(desc->buf_addr1), 4, 4);
dma_bm_write(p + 12, (uint8_t *) &(desc->buf_addr2), 4, 4);
mem_writel_phys(p, desc->status);
mem_writel_phys(p + 4, desc->control);
mem_writel_phys(p + 8, desc->buf_addr1);
mem_writel_phys(p + 12, desc->buf_addr2);
}
}
@@ -438,10 +433,6 @@ tulip_copy_rx_bytes(TULIPState *s, struct tulip_descriptor *desc)
len = s->rx_frame_len;
}
if (s->rx_frame_len + len > sizeof(s->rx_frame)) {
return;
}
dma_bm_write(desc->buf_addr1, s->rx_frame + (s->rx_frame_size - s->rx_frame_len), len, 4);
s->rx_frame_len -= len;
}
@@ -453,10 +444,6 @@ tulip_copy_rx_bytes(TULIPState *s, struct tulip_descriptor *desc)
len = s->rx_frame_len;
}
if (s->rx_frame_len + len > sizeof(s->rx_frame)) {
return;
}
dma_bm_write(desc->buf_addr2, s->rx_frame + (s->rx_frame_size - s->rx_frame_len), len, 4);
s->rx_frame_len -= len;
}
@@ -581,7 +568,7 @@ static const uint16_t tulip_mdi_default[] = {
0x0600,
0x0001,
0x0000,
0x3b40,
0x0000,
0x0000,
0x0000,
0x0000,