CP working in Z3 and driver update
A fix for int6 is needed for the first proto: Connect SJ1 right with INT6-Pad. But CP and lan are not working with AmiTCP
This commit is contained in:
@@ -64,6 +64,12 @@ PRIORITY=PRI/K/N,BPS/K/N,MTU/K/N,FULLDUPLEX/S,FLOWCONTROL/S,TIMER/K/N,MULTICAST/
|
||||
Changelog:
|
||||
----------
|
||||
|
||||
2.00 - improved RX speed for buffer wraparound cases
|
||||
- some more safety checks for boards with unresponsive
|
||||
ENC chips (explicit card bus clear before verification of
|
||||
chip presence)
|
||||
- version bump
|
||||
|
||||
1.99 - fixed soft reset for ZIII firmware
|
||||
- re-enabled 32 Bit Buffer copies (unless Miami is active)
|
||||
- default server task priority for AmiTCP=6 (otherwise 0)
|
||||
|
||||
@@ -188,6 +188,14 @@ TIMER/K/N,MULTICAST/S
|
||||
Changelog:
|
||||
----------
|
||||
|
||||
2.00 - parse Vampire 4 UUID for MAC auto-assignment
|
||||
- version bump
|
||||
|
||||
1.99 - re-enabled 32 Bit Buffer copies (unless Miami is active)
|
||||
- default server task priority for AmiTCP=6 (otherwise 0)
|
||||
- tuned RX/TX balancing to make RoadShow happy
|
||||
- added Packet Filter hook processing (needs testing)
|
||||
|
||||
1.95 - workaround for MiamiDX bugs, 32 Bit Buffer copy routines could not be
|
||||
used safely with it.
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -162,11 +162,11 @@ ASM SAVEDS LONG DevOpen( ASMR(a1) struct IOSana2Req *ioreq ASMREG(a1),
|
||||
if( (db->db_Units[unit].du_OpenCount > 0) &&
|
||||
(flags & SANA2OPF_MINE) )
|
||||
ok = 0;
|
||||
|
||||
#if 0
|
||||
if( (db->db_Units[unit].du_OpenCount > 0) &&
|
||||
(flags & SANA2OPF_PROM) )
|
||||
ok = 0;
|
||||
|
||||
#endif
|
||||
|
||||
if( db->db_Units[unit].du_Flags & DUF_EXCLUSIVE )
|
||||
ok = 0;
|
||||
@@ -215,6 +215,8 @@ ASM SAVEDS LONG DevOpen( ASMR(a1) struct IOSana2Req *ioreq ASMREG(a1),
|
||||
dbm->dbm_CopyFromBuffer32 = (BMCALL)((void (*)())(GetTagData(S2_CopyFromBuff32, 0,
|
||||
(struct TagItem *)ioreq->ios2_BufferManagement)));
|
||||
}
|
||||
|
||||
D(("BufferMgmt CBuf32 %lx PF %lx CBuf %lx\n",(ULONG)dbm->dbm_CopyFromBuffer32,(ULONG)dbm->dbm_PacketFilter,(ULONG)dbm->dbm_CopyFromBuffer));
|
||||
|
||||
if( !dbm->dbm_CopyToBuffer32 )
|
||||
dbm->dbm_CopyToBuffer32 = dbm->dbm_CopyToBuffer;
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
; - device in Mode 3, i.e. 16 Bit access
|
||||
; - register addresses shifted by 1 left, i.e. register base * 2 compared
|
||||
; to 16 Bit mode of ENC624J600 documentation (8 Bit mode alike)
|
||||
; - some byte shuffling required - which currently is in a state of flux
|
||||
; - in initial hardware/software combinations there was some byte
|
||||
; shuffling required - whose consequence is encapsulation of hardware
|
||||
; accesses in macros
|
||||
;
|
||||
; Note: This code is in some places intentionally saving more registers than
|
||||
; required by the AmigaOS ABI.
|
||||
@@ -376,8 +378,9 @@ _enc624j6l_CheckBoard: ;check whether board is operating correctly
|
||||
; ----------------- quick check for operational mode ------------------
|
||||
move.w #$1234,d1
|
||||
WRITEREG EUDAST,a0,d1 ;write data
|
||||
tst.l 4.w ;clear BUS
|
||||
READREG EUDAST,a0,d0
|
||||
moveq #0,d0
|
||||
SETREG EUDAST,a0,d0 ;clear ENC's bus (does not change anything in its regs)
|
||||
READREG EUDAST,a0,d0 ;
|
||||
cmp.w d0,d1 ;do we get the register back ?
|
||||
bne.s .err ;no -> complain
|
||||
|
||||
@@ -1296,6 +1299,52 @@ _enc624j6l_RecvFrame: ;
|
||||
bra.s .end_read
|
||||
|
||||
.nooptrecv:
|
||||
ifeq _OPT_BUFFER_SWAP ;1
|
||||
;
|
||||
;wraparound aware loop for big endian buffer
|
||||
;
|
||||
move.w #RXSTOP_INIT+1,d1 ;end address $6000
|
||||
lea (a0,d7.w),a2 ;read pointer
|
||||
sub.w d7,d1 ;minus start pointer = number of bytes until wrap
|
||||
cmp.w d0,d1 ;
|
||||
bhi.s .emergency_slow ;don`t trust anyone: if d1<0 or >total_length, then branch to slow routine
|
||||
|
||||
move d1,d2
|
||||
lsr #2,d2 ;we copy long words
|
||||
subq #1,d2 ;dbf
|
||||
blt.s .nowords_beforewrap ;
|
||||
.loop_beforewrap:
|
||||
move.l (a2)+,(a1)+
|
||||
dbf d2,.loop_beforewrap
|
||||
|
||||
.nowords_beforewrap: ;
|
||||
btst #1,d7 ;uneven longword address before wraparound ?
|
||||
beq.s .copy_afterwrap
|
||||
move.w (a2)+,(a1)+ ;copy word from uneven address
|
||||
.copy_afterwrap:
|
||||
|
||||
move #RXSTART_INIT,d7 ;wrap
|
||||
lea (a0,d7.w),a2 ;read pointer
|
||||
|
||||
move d0,d2 ;total bytes to read
|
||||
sub.w d1,d2 ;remaining=total-copied (D1=RXSTOP_INIT+1-D7)
|
||||
ble.s .end_read ;done, if zero
|
||||
|
||||
move d2,d1 ;
|
||||
lsr #2,d2 ;we copy long words
|
||||
bra.s .enter_afterwrap
|
||||
.loop_afterwrap:
|
||||
move.l (a2)+,(a1)+
|
||||
.enter_afterwrap:
|
||||
dbf d2,.loop_afterwrap
|
||||
|
||||
and.b #3,d1 ;btst #1,d1 ;1 byte or short remaining ?
|
||||
beq.s .end_read
|
||||
move.w (a2)+,(a1)+
|
||||
bra.s .end_read
|
||||
|
||||
.emergency_slow:
|
||||
endc ;_OPT_BUFFER_SWAP
|
||||
endc ;_OPT_RECV
|
||||
|
||||
;generic loop: check for position overflows with each word
|
||||
@@ -1427,7 +1476,7 @@ _enc624j6l_TransmitFrame:
|
||||
move.l (a1)+,(a2)+ ;save to SRAM
|
||||
endr
|
||||
move.l (a1)+,d1
|
||||
dbf d5,.largecopy
|
||||
dbf d5,.largecopy
|
||||
|
||||
move.l d1,(a2)+
|
||||
|
||||
@@ -1479,7 +1528,7 @@ _enc624j6l_TransmitFrame:
|
||||
;100 MBit/s frame time is max. 0.12 ms (without inter-frame spacing)
|
||||
|
||||
;wait 20 us via CIA
|
||||
moveq #120,d0
|
||||
moveq #20,d0
|
||||
bsr _enc624j6l_UMinDelay
|
||||
dbf d3,.txwait ;approx. 4ms max. wait
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,4 @@
|
||||
;APS00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
; ------------------------------------------------------------------------------
|
||||
; | Flash ROM Read Serial Number |
|
||||
; | Copyright (c) 2016 APOLLO TEAM |
|
||||
@@ -21,6 +22,10 @@ FLASH_MISOn EQU $0
|
||||
;VAMPIRE_MAGIC EQU ascii "Vamp"
|
||||
VAMPIRE_MAGIC EQU $56616D70
|
||||
|
||||
VAMPIDREG EQU $DFF3FC
|
||||
V4_ID1 EQU $DFF3F4
|
||||
V4_ID2 EQU $DFF3F0
|
||||
|
||||
xdef _vampire_UUID
|
||||
|
||||
;-------- Get 64 Bit unique ID --------------------
|
||||
@@ -31,13 +36,23 @@ VAMPIRE_MAGIC EQU $56616D70
|
||||
; >0 - success
|
||||
_vampire_UUID:
|
||||
movem.l d1-a6,-(sp) ;lazy register store
|
||||
lea VAMPIDREG,a0
|
||||
|
||||
move.w (a0),d0 ;ID reg empty?
|
||||
blt.s v2$ ;yes, try flash method
|
||||
cmp.w #$2FF,d0 ;Core type << 8 | Clock_Multiplier
|
||||
ble.s v2$
|
||||
|
||||
move.l V4_ID1-VAMPIDREG(a0),d0
|
||||
move.l V4_ID2-VAMPIDREG(a0),d1
|
||||
bra.s common$
|
||||
v2$
|
||||
bsr flashreadid
|
||||
cmpi.b #FLASH_ID,d0
|
||||
bne.s error$
|
||||
|
||||
bsr flashuniqueid
|
||||
|
||||
common$
|
||||
move.l d0,(a1)
|
||||
move.l d1,4(a1)
|
||||
|
||||
|
||||
@@ -35,6 +35,10 @@ static LONG server_queryext( DEVBASEP, ULONG unit, struct IOSana2Req *ioreq );
|
||||
*/
|
||||
#define S2QUERYEXT_NOLENGTHCHECK
|
||||
|
||||
/* this limits the number of write requests per run, also improves
|
||||
Roadshow performance when active */
|
||||
#define ONE_WRITE_REQ
|
||||
|
||||
|
||||
/* (avoid external link libraries) this call is not time critical */
|
||||
static void MemSet( void *a, ULONG val, ULONG size )
|
||||
@@ -684,7 +688,7 @@ static LONG server_writequeue( DEVBASEP, ULONG unit )
|
||||
|
||||
ObtainSemaphore( &db->db_Units[unit].du_Sem );
|
||||
|
||||
#if 1
|
||||
#if 1 /* #ifdef ONE_WRITE_REQ */
|
||||
/* whole queue per call */
|
||||
for( ioreq = (struct IOSana2Req *)db->db_Units[unit].du_WriteQueue.lh_Head;
|
||||
(nextio= (struct IOSana2Req *)ioreq->ios2_Req.io_Message.mn_Node.ln_Succ);
|
||||
@@ -726,8 +730,10 @@ static LONG server_writequeue( DEVBASEP, ULONG unit )
|
||||
/* error handling */
|
||||
server_writeerror( db, unit, ioreq, code );
|
||||
}
|
||||
#ifdef ONE_WRITE_REQ
|
||||
if( hw_recv_pending(db,unit) )
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
ReleaseSemaphore( &db->db_Units[unit].du_Sem );
|
||||
|
||||
@@ -154,7 +154,7 @@ v2expeth.device: $(OBJECTS)
|
||||
-$(LD) $(OBJECTS) LIB sc:lib/sc.lib $(LDFLAGS) TO $(DEVICEID)
|
||||
|
||||
clean:
|
||||
-$(RM) sdnet.device v2expeth.device \#?.oex *.osd $(SUBDIR)/\#?.oex $(SUBDIR)/\#?.osd
|
||||
-$(RM) sdnet.device v2expeth.device \#?.oex \#?.osd $(SUBDIR)/\#?.oex $(SUBDIR)/\#?.osd
|
||||
|
||||
install:
|
||||
copy sdnet.device v2expeth.device DEVS:Networks
|
||||
|
||||
@@ -154,7 +154,7 @@ enc624j6net.device_68000: $(OBJECTS)
|
||||
-$(LD) $(OBJECTS) LIB sc:lib/sc.lib $(LDFLAGS) TO $(DEVICEID)_68000
|
||||
|
||||
clean:
|
||||
-$(RM) enc624j6net.device enc624j6net.device_68000 \#?.o00 *.o20 $(SUBDIR)/\#?.o00 $(SUBDIR)/\#?.o20
|
||||
-$(RM) enc624j6net.device enc624j6net.device_68000 \#?.o00 \#?.o20 $(SUBDIR)/\#?.o00 $(SUBDIR)/\#?.o20
|
||||
|
||||
install:
|
||||
copy enc624j6net.device DEVS:Networks
|
||||
|
||||
@@ -8,9 +8,10 @@
|
||||
#ifndef _INC_VERSION_H
|
||||
#define _INC_VERSION_H
|
||||
|
||||
#define DEVICEVERSION 1
|
||||
#define DEVICEREVISION 99
|
||||
#define DEVICEEXTRA Beta
|
||||
#define DEVICEDATE 08.01.2019
|
||||
#define DEVICEVERSION 2
|
||||
#define DEVICEREVISION 0
|
||||
#define DEVICEEXTRA
|
||||
/* #define DEVICEEXTRA Beta */
|
||||
#define DEVICEDATE 13.01.2019
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user