Skip to content

Commit c746075

Browse files
committed
Reduce EXI speed for WIZnet in Serial Port 1
1 parent 7ed025e commit c746075

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

lwip/netif/w5500if.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,7 @@ struct w5500if {
331331

332332
static struct netif *w5500_netif;
333333
static u8 Dev[EXI_CHANNEL_MAX];
334+
static u8 Freq[EXI_CHANNEL_MAX];
334335

335336
static bool W5500_ReadCmd(s32 chan, u32 cmd, void *buf, u32 len)
336337
{
@@ -339,7 +340,7 @@ static bool W5500_ReadCmd(s32 chan, u32 cmd, void *buf, u32 len)
339340
cmd &= ~W5500_RWB;
340341
cmd = (cmd << 16) | (cmd >> 16);
341342

342-
if (!EXI_Select(chan, Dev[chan], EXI_SPEED32MHZ))
343+
if (!EXI_Select(chan, Dev[chan], Freq[chan]))
343344
return false;
344345

345346
err |= !EXI_ImmEx(chan, &cmd, 3, EXI_WRITE);
@@ -355,7 +356,7 @@ static bool W5500_WriteCmd(s32 chan, u32 cmd, const void *buf, u32 len)
355356
cmd |= W5500_RWB;
356357
cmd = (cmd << 16) | (cmd >> 16);
357358

358-
if (!EXI_Select(chan, Dev[chan], EXI_SPEED32MHZ))
359+
if (!EXI_Select(chan, Dev[chan], Freq[chan]))
359360
return false;
360361

361362
err |= !EXI_ImmEx(chan, &cmd, 3, EXI_WRITE);
@@ -558,6 +559,7 @@ static bool W5500_Init(s32 chan, s32 dev, struct w5500if *w5500if)
558559

559560
EXI_LockEx(chan, dev);
560561
Dev[chan] = dev;
562+
Freq[chan] = dev == EXI_DEVICE_0 ? EXI_SPEED32MHZ : EXI_SPEED16MHZ;
561563

562564
if (!W5500_ReadReg(chan, W5500_VERSIONR, &versionr) || versionr != 0x04) {
563565
EXI_Unlock(chan);

lwip/netif/w6x00if.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,7 @@ struct w6x00if {
698698

699699
static struct netif *w6x00_netif;
700700
static u8 Dev[EXI_CHANNEL_MAX];
701+
static u8 Freq[EXI_CHANNEL_MAX];
701702

702703
static bool (*W6X00_ReadCmd)(s32 chan, u32 cmd, void *buf, u32 len);
703704
static bool (*W6X00_WriteCmd)(s32 chan, u32 cmd, const void *buf, u32 len);
@@ -709,7 +710,7 @@ static bool W6100_ReadCmd(s32 chan, u32 cmd, void *buf, u32 len)
709710
cmd &= ~W6100_RWB;
710711
cmd = (cmd << 16) | (cmd >> 16);
711712

712-
if (!EXI_Select(chan, Dev[chan], EXI_SPEED32MHZ))
713+
if (!EXI_Select(chan, Dev[chan], Freq[chan]))
713714
return false;
714715

715716
err |= !EXI_ImmEx(chan, &cmd, 3, EXI_WRITE);
@@ -725,7 +726,7 @@ static bool W6100_WriteCmd(s32 chan, u32 cmd, const void *buf, u32 len)
725726
cmd |= W6100_RWB;
726727
cmd = (cmd << 16) | (cmd >> 16);
727728

728-
if (!EXI_Select(chan, Dev[chan], EXI_SPEED32MHZ))
729+
if (!EXI_Select(chan, Dev[chan], Freq[chan]))
729730
return false;
730731

731732
err |= !EXI_ImmEx(chan, &cmd, 3, EXI_WRITE);
@@ -742,7 +743,7 @@ static bool W6300_ReadCmd(s32 chan, u32 cmd, void *buf, u32 len)
742743
cmd &= ~W6300_RWB;
743744
cmd <<= 8;
744745

745-
if (!EXI_Select(chan, Dev[chan], EXI_SPEED32MHZ))
746+
if (!EXI_Select(chan, Dev[chan], Freq[chan]))
746747
return false;
747748

748749
err |= !EXI_ImmEx(chan, &cmd, 4, EXI_WRITE);
@@ -759,7 +760,7 @@ static bool W6300_WriteCmd(s32 chan, u32 cmd, const void *buf, u32 len)
759760
cmd |= W6300_RWB;
760761
cmd <<= 8;
761762

762-
if (!EXI_Select(chan, Dev[chan], EXI_SPEED32MHZ))
763+
if (!EXI_Select(chan, Dev[chan], Freq[chan]))
763764
return false;
764765

765766
err |= !EXI_ImmEx(chan, &cmd, 4, EXI_WRITE);
@@ -960,6 +961,7 @@ static bool W6X00_Init(s32 chan, s32 dev, struct w6x00if *w6x00if)
960961

961962
EXI_LockEx(chan, dev);
962963
Dev[chan] = dev;
964+
Freq[chan] = dev == EXI_DEVICE_0 ? EXI_SPEED32MHZ : EXI_SPEED16MHZ;
963965

964966
switch (id) {
965967
case W6100_CID:

0 commit comments

Comments
 (0)