Merge pull request #19 in PROCESSOR-SDK/pdk from prsdk-7325 to master
authorMahesh Radhakrishnan <a0875154@ti.com>
Fri, 8 Nov 2019 15:33:33 +0000 (09:33 -0600)
committerMahesh Radhakrishnan <a0875154@ti.com>
Fri, 8 Nov 2019 15:33:33 +0000 (09:33 -0600)
* commit '9d69ba80bea78fb67e03c012764593297e0afa76':
  PRSDK-7325: fix XFR2VBUS_WAIT4READY macro
  PRSDK-7324 - dm_f/w code cleanup

packages/ti/drv/emac/firmware/icss_dualmac/src/makefile
packages/ti/drv/emac/firmware/icss_dualmac/src/psiloop.h [deleted file]
packages/ti/drv/emac/firmware/icss_dualmac/src/reg_alias.h
packages/ti/drv/emac/firmware/icss_dualmac/src/rtu_psi.h
packages/ti/drv/emac/firmware/icss_dualmac/src/rtu_psi_loopback.h [deleted file]
packages/ti/drv/emac/firmware/icss_dualmac/src/rtu_v2.asm
packages/ti/drv/emac/firmware/icss_dualmac/src/rxl2_txl2.asm
packages/ti/drv/emac/firmware/icss_dualmac/src/scheduler.h
packages/ti/drv/emac/firmware/icss_dualmac/src/tx.h
packages/ti/drv/emac/firmware/icss_dualmac/src/xfr2vbus_widget.h

index ea787984d1ad4143152b87e5af6248bbef71c940..2c1b6463c838f03853bbf1e6edac8633daa978ae 100644 (file)
@@ -91,8 +91,8 @@ CL_FLAGS = --endian=little \
           --diag_wrap=off \
           --diag_warning=225 \
           --display_error_number \
+          --hardware_mac=on \
            --code_address_listing_unit=word \
-          --hardware_mac=on
 
 FLAGS = -al \
        --preproc_with_compile \
diff --git a/packages/ti/drv/emac/firmware/icss_dualmac/src/psiloop.h b/packages/ti/drv/emac/firmware/icss_dualmac/src/psiloop.h
deleted file mode 100644 (file)
index 58bc4f8..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-;
-;  TEXAS INSTRUMENTS TEXT FILE LICENSE
-;
-;   Copyright (c) 2018-2019 Texas Instruments Incorporated
-;
-;  All rights reserved not granted herein.
-;
-;  Limited License.
-;
-;  Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
-;  license under copyrights and patents it now or hereafter owns or controls to
-;  make, have made, use, import, offer to sell and sell ("Utilize") this software
-;  subject to the terms herein.  With respect to the foregoing patent license,
-;  such license is granted  solely to the extent that any such patent is necessary
-;  to Utilize the software alone.  The patent license shall not apply to any
-;  combinations which include this software, other than combinations with devices
-;  manufactured by or for TI (“TI Devices”).  No hardware patent is licensed hereunder.
-;
-;  Redistributions must preserve existing copyright notices and reproduce this license
-;  (including the above copyright notice and the disclaimer and (if applicable) source
-;  code license limitations below) in the documentation and/or other materials provided
-;  with the distribution.
-;
-;  Redistribution and use in binary form, without modification, are permitted provided
-;  that the following conditions are met:
-;      No reverse engineering, decompilation, or disassembly of this software is
-;   permitted with respect to any software provided in binary form.
-;      Any redistribution and use are licensed by TI for use only with TI Devices.
-;      Nothing shall obligate TI to provide you with source code for the software
-;   licensed and provided to you in object code.
-;
-;  If software source code is provided to you, modification and redistribution of the
-;  source code are permitted provided that the following conditions are met:
-;      Any redistribution and use of the source code, including any resulting derivative
-;   works, are licensed by TI for use only with TI Devices.
-;      Any redistribution and use of any object code compiled from the source code
-;   and any resulting derivative works, are licensed by TI for use only with TI Devices.
-;
-;  Neither the name of Texas Instruments Incorporated nor the names of its suppliers
-;  may be used to endorse or promote products derived from this software without
-;  specific prior written permission.
-;
-;  DISCLAIMER.
-;
-;  THIS SOFTWARE IS PROVIDED BY TI AND TI’S LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED
-;  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-;  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TI AND TI’S
-;  LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-;  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-;  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-;  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-;  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-;---------------------
-; File:psiloop.h
-;PSI LOOPBACK ROUTINES
-;  (diagnostics)
-; PSI LOOPBACK runs on
-; BG on PRU, but looks
-;  like a tx task
-;   (e.g. will use
-;    tx task registers)
-; if this runs, no TX Will run
-; and no RX should run since this is
-;  grabing PSI widget for its use
-;   always uses unit 0
-;---------------------
-
-;'tx' init for psi loopback
-PSILOOP_TX_INIT        .macro   r_d, runit
-       flip_tx_r10_r23
-       mov     TxRegs.ds_flags, r_d.w2 ;descriptor2(flags, etc)
-       mov     GRegs.tx.b.len, r_d.w0  ;save length we are expecting to transmit
-       ldi     GRegs.tx.b.state, TX_S_LOOP
-       PSILOOP_TX_POLL runit, nd_lab?, eop_lab?
-nd_lab?:
-eop_lab?:
-       flip_tx_r10_r23
- .endm
-
-;poll routine for bg.  If dma present, it will process it
-PSILOOP_TX_POLL        .macro   runit, no_data_label,eop_label
-       XFR2VBUS_POLL_READ runit
-       qbbc    no_data_label, r18, 2
-
-;have data ready
-       qbge    tx_cont1a?, GRegs.tx.b.len, 64
-;read the 64 bytes & write to PSI in 4 transactions
-       XFR2VBUS_READ64_RESULT runit
-       ldi32   r1, MD_DATA0
-       PSI_WRITE
-       LEBE2_5_swap_6_9
-       PSI_WRITE
-       LEBE2_9_swap_10_17
-       LEBE2_5_swap_6_9
-       PSI_WRITE
-       LEBE2_5_swap_6_9
-       PSI_WRITE
-       sub     GRegs.tx.b.len, GRegs.tx.b.len, 64
-       jmp     tx_done?
-
-tx_cont1a?:   ;eop, (again always using unit a)
-       XFR2VBUS_CANCEL_READ_AUTO_64_CMD (runit)
-       XFR2VBUS_READ64_RESULT (runit)
-       qble    mt16?, GRegs.tx.b.len, 16
-;just have 16bytes or less
-       ldi32   r1, MD_DATA1
-       add     r0.b0, GRegs.tx.b.len, 4
-       PSI_WRITE_N
-       jmp     tx_done2?
-mt16?:
-       qble    mt32?, GRegs.tx.b.len, 32
-;just have 32bytes or less
-       ldi32   r0, MD_DATA0
-       PSI_WRITE
-       LEBE2_5_swap_6_9
-       ldi32   r1, MD_DATA1
-       sub     GRegs.tx.b.len, GRegs.tx.b.len,16
-       add     r0.b0, GRegs.tx.b.len, 4
-       PSI_WRITE_N
-       jmp     tx_done2?
-mt32?:
-       qble    mt48?, GRegs.tx.b.len, 48
-;just have 48bytes or less
-       ldi32   r0, MD_DATA0
-       PSI_WRITE
-       LEBE2_5_swap_6_9
-       PSI_WRITE
-       LEBE2_9_swap_10_17
-       LEBE2_5_swap_6_9
-       ldi32   r1, MD_DATA1
-       sub     GRegs.tx.b.len, GRegs.tx.b.len,32
-       add     r0.b0, GRegs.tx.b.len, 4
-       PSI_WRITE_N
-       jmp     tx_done2?
-mt48?:
-;have more than 48
-       ldi32   r0, MD_DATA0
-       PSI_WRITE
-       LEBE2_5_swap_6_9
-       PSI_WRITE
-       LEBE2_9_swap_10_17
-       LEBE2_5_swap_6_9
-       PSI_WRITE
-       LEBE2_5_swap_6_9
-       ldi32   r1, MD_DATA1
-       sub     GRegs.tx.b.len, GRegs.tx.b.len,48
-       add     r0.b0, GRegs.tx.b.len, 4
-       PSI_WRITE_N
-tx_done2?:
-;say we are done
-       SPIN_SET_LOCK_LOC PRU_RTU_EOD_P_FLAG
-       SPIN_CLR_LOCK_LOC PRU_RTU_EOD_P_FLAG
-;set tx state
-       ldi     GRegs.tx.b.state, TX_S_IDLE
-       jmp eop_label
-tx_done?:
- .endm
index e8acb266361cc48ff780f2d1c227ea7cf0ab73de..d3d461541ec919193496570a49555b3c79c6193f 100644 (file)
@@ -98,16 +98,10 @@ res         .ushort
 ds_flags       .ushort ;descriptor info
 stash_ds_flags .ushort
 stash_tx_len   .ushort
-pp_afs_tx      .ubyte  ;cnt of bytes sent so far
-pp_afs_rem     .ubyte  ;addFragSz of remote  (64-256)
-pp_ppok                .ubyte  ;flags
-pp_count       .ubyte  ;[256] counter of preemptions
+;
+res2           .uint
        .endstruct ;Struct_TXTASK
 
-f_pp_active    .set    0  ;preemption featue active  on this port
-f_pp_enufsent  .set    1  ;enough bytes sent
-f_pp_enufleft  .set    2  ;enough bytes remain
-PPOK           .set    0x7
 
 TxRegs .sassign r21, Struct_TXTASK
 
@@ -123,7 +117,7 @@ bg_cnt              .uint   ; BG loop counter
 psi2h_active   .ubyte  ; 1 - active, 0 - idle
 res9           .ubyte  ;
 len2host       .ushort ;
-borg_limit     .ushort ;
+res10          .ushort ;
 len_orig       .ushort ;
        .endstruct ;Struct_BGTASK
 
index cc3c8230d4d4e10bbbf4b502001fede47f1bf9d5..f48b0d343aa53507b944da4acd4323029d450cf3 100644 (file)
@@ -58,7 +58,6 @@
 ;---------------------------------------------------
 
 ;----------------------DEFINES------------------------
- .include "rtu_psi_loopback.h"
 
 ;global PSI state
        .asg    b0, ssmask  ; mask of threads that are stalled.
@@ -180,24 +179,10 @@ $7:       qbbc    $1, r2, 23       ; r2.t23
        set     Ctx.ippc_flags, Ctx.ippc_flags, f_crcinpkt
 
 $1:
- .if $isdefed("LOOPBACK_TEST")
-       set     Ctx.ippc_flags, Ctx.ippc_flags, f_crcinpkt
- .endif
- .if $isdefed("LOOPBACK_TEST2")
-       clr     Ctx.ippc_flags, Ctx.ippc_flags, f_crcinpkt ;crc not in pkt
- .endif
-
        set     Ctx.ippc_forward, Ctx.ippc_forward, our_port ;to keep it local
        ;//set portq
        and     Ctx.ippc_res, r4.b3, 0x07  ;ippc_res set to dst tag hi 
        mov     Ctx.ippc_totlen, r3.w0 ;check rate
- .if $isdefed("PSILOOP")
-       add     Ctx.ippc_totlen, Ctx.ippc_totlen, 4   ;add 'crc' bytes
- .endif
- .if $isdefed("LOOPBACK_TEST")
-       mov     Ctx.ippc_totlen, 512  ;hard code because it will be 0xffff
- .endif
-
  .if $isdefed("TX_RATE_LIMITER")
        mov     r3, GRrtu.ActThrdNum
        qbbc    $6, Ctx.he_flags, r3
@@ -409,9 +394,6 @@ DO_WRITE64  .macro  unit, len
 DO_EOP .macro  stall_exit
 ;build common parts of descriptor
        mov     r8.w0, Ctx.ippc_curlen        ;len
- .if $isdefed("PSILOOP")
-       add r8.w0, r8.w0, 4  ;include 'dummy' crc
- .endif
        ldi     r8.b2, FROM_US_V
        qbbs    no_crc?, Ctx.ippc_flags, f_crcinpkt
        set     r8.t16 ;force tx to get hw to do crc
diff --git a/packages/ti/drv/emac/firmware/icss_dualmac/src/rtu_psi_loopback.h b/packages/ti/drv/emac/firmware/icss_dualmac/src/rtu_psi_loopback.h
deleted file mode 100644 (file)
index 58c61e0..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-;
-;  TEXAS INSTRUMENTS TEXT FILE LICENSE
-;
-;   Copyright (c) 2018-2019 Texas Instruments Incorporated
-;
-;  All rights reserved not granted herein.
-;
-;  Limited License.
-;
-;  Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
-;  license under copyrights and patents it now or hereafter owns or controls to
-;  make, have made, use, import, offer to sell and sell ("Utilize") this software
-;  subject to the terms herein.  With respect to the foregoing patent license,
-;  such license is granted  solely to the extent that any such patent is necessary
-;  to Utilize the software alone.  The patent license shall not apply to any
-;  combinations which include this software, other than combinations with devices
-;  manufactured by or for TI (“TI Devices”).  No hardware patent is licensed hereunder.
-;
-;  Redistributions must preserve existing copyright notices and reproduce this license
-;  (including the above copyright notice and the disclaimer and (if applicable) source
-;  code license limitations below) in the documentation and/or other materials provided
-;  with the distribution.
-;
-;  Redistribution and use in binary form, without modification, are permitted provided
-;  that the following conditions are met:
-;      No reverse engineering, decompilation, or disassembly of this software is
-;   permitted with respect to any software provided in binary form.
-;      Any redistribution and use are licensed by TI for use only with TI Devices.
-;      Nothing shall obligate TI to provide you with source code for the software
-;   licensed and provided to you in object code.
-;
-;  If software source code is provided to you, modification and redistribution of the
-;  source code are permitted provided that the following conditions are met:
-;      Any redistribution and use of the source code, including any resulting derivative
-;   works, are licensed by TI for use only with TI Devices.
-;      Any redistribution and use of any object code compiled from the source code
-;   and any resulting derivative works, are licensed by TI for use only with TI Devices.
-;
-;  Neither the name of Texas Instruments Incorporated nor the names of its suppliers
-;  may be used to endorse or promote products derived from this software without
-;  specific prior written permission.
-;
-;  DISCLAIMER.
-;
-;  THIS SOFTWARE IS PROVIDED BY TI AND TI’S LICENSORS "AS IS" AND ANY EXPRESS OR IMPLIED
-;  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-;  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TI AND TI’S
-;  LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-;  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-;  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-;  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-;  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-;-------------------------------------------------
-;---file: rtu_psi_loopback.h
-;---purpose:  loopback macros for rtu_psi 
-;---------------------------------------------------
-
-;#define LOOPBACK_TEST  ;direct attach between pru/rtu loopback
-;LOOPBACK_TEST2        .set    1 ;direct attach to host loopback
-
-;if loopback, define one of these 4
-SL_P0  .set    1 ;this port
-;#define SL_P1   ;other port
-;#define SL_P01  ;both
-;#define SL_DROP ;no port
-
-loopback_test_forward .macro
- .if $isdefed("LOOPBACK_TEST")
-
-;force drop
- .if $isdefed("SL_DROP")
-       clr     r_pix0.b1.t1 ;f_port0
-       clr     r_pix0.b1.t2 ;f_port1
- .endif
-
-;force it to stay local
- .if $isdefed("SL_P0")
- .if $isdefed("SLICE0")
-       clr     r_pix0.b1.t1 ;f_port0
- .else
-       clr     r_pix0.b1.t2 ;f_port1
- .endif
-
- .endif
-
-;force it to other slice
- .if $isdefed("SL_P1")
- .if $isdefed("SLICE0")
-       clr     r_pix0.b1.t2 ;f_port1
- .else
-       clr     r_pix0.b1.t1 ;f_port0
- .endif
- .endif
-
-;leave it set for both
- .if $isdefed("SL_P01")
- .endif
- .endif
- .endm
-
-loopback_test2_forward .macro
- .if $isdefed("LOOPBACK_TEST2")
-
-;force drop
- .if $isdefed("SL_DROP")
-       clr     r_pix0.b1.t1 ;f_port0
-       clr     r_pix0.b1.t2 ;f_port1
- .endif
-
-;force it to stay local
- .if $isdefed("SL_P0")
- .if $isdefed("SLICE0")
-       clr     r_pix0.b1.t1 ;f_port0
- .else
-       clr     r_pix0.b1.t2 ;f_port1
- .endif
- .endif
-
-;force it to other slice
- .if $isdefed("SL_P1")
- .if $isdefed("SLICE0")
-       clr     r_pix0.b1.t2 ;f_port1
- .else
-       clr     r_pix0.b1.t1 ;f_port0
- .endif
- .endif
-
-;leave it set for both
- .if $isdefed("SL_P01")
- .endif
- .endif
- .endm
-
index 9e057456fedea1043fc2738e0f95f8fc1e0ba588..020ba0de54ae968105c32f22b2037aeb2f80db03 100644 (file)
@@ -82,7 +82,6 @@ RX_RAW        .set    1
  .include "txrate.h"
  .include "rtu_psi.h"
  .include "iep.h"
- .include "psiloop.h"
 
 loop_here .macro
 here?: jmp     here?
index 84d9382bc1035a2afe310212ee3f190bec0b1756..c158c8985bb54b05cdb41a2c97834fdc3fcada36 100644 (file)
@@ -62,7 +62,6 @@
 ; SLICE0 or SLICE1 must be defined  (but not both)
 ; WAIT_FOR_DEBUGGER:  wait for debugger to attach
 ; VLAN_ENABLED
-; PSILOOP
 DATA_ONLY      .set    1 ;control path moved to RTU
 
 ; sanity check ;{{{1
@@ -89,7 +88,6 @@ DATA_ONLY     .set    1 ;control path moved to RTU
  .include "filter.h"
  .include "lebe.h"
  .include "ipc.h"
- .include "psiloop.h"
  .include "iep.h"
  .include "psisandf.h"
 
@@ -262,7 +260,6 @@ RX:
        ldi     GRegs.snf.b.rd_cur, MINPS
        ldi     r30, 1522  ;todo - make a parameter
        ldi32   r10, FW_CONFIG
-       lbbo    &r2, r10, CFG_N_BURST, 4
 
 ; set pru ready status
        ldi32   r0, PRU_READY
@@ -278,19 +275,12 @@ wait_rtu_ready:
 ;BG TASK:     r24-r29  are global ;{{{1
 ;-------------------------------------------------------------------------
        zero    &r18, 24
-       mov     BgRegs.borg_limit, r2 ; GS_NBURST ;
 
 ;================================
-; BG LOOP:  stay here until we see
-;            GRegs.pkt_cnt.w.tx == BgRegs.borg_limit if in borg mode
-;            until cmd cancel seen
-;=================================
+; BG LOOP:  until cmd cancel seen
+;================================
 bg_loop:
        add     BgRegs.bg_cnt, BgRegs.bg_cnt, 1 ;loop count
-;can we exit?
-       qbeq    skip_chk, BgRegs.borg_limit, 0
-       qbeq    bg_done, GRegs.pkt_cnt.w.tx, BgRegs.borg_limit ; done
-skip_chk:
 ; if RTU started shutdown process - disable TM and loop forever
        ldi32   r0, FW_CONFIG
        ldi32   r1, RTU_STARTED_SHUTDOWN
@@ -338,12 +328,10 @@ th_schedule0:
 scheduler:
        TM_DISABLE
        qbeq    bg_schedule0, GRegs.tx.b.state, TX_S_IDLE ;if tx state is idle, check IPC for new descriptor
-       qbeq    bg_schedule1, GRegs.tx.b.state, TX_S_ERR ;if tx state is idle, check IPC for new descriptor
- .if $isdefed("PSILOOP")
-       qbeq    bg_schedulePL, GRegs.tx.b.state, TX_S_LOOP ;if psi loopback
- .endif
-
-;TX ACTIVE.
+       qbne    sched_done, GRegs.tx.b.state, TX_S_ERR ;if tx state is idle, check IPC for new descriptor
+;error case (underflow)
+;todo
+       ldi     GRegs.tx.b.state, TX_S_IDLE
 sched_done:
        TM_ENABLE
        jmp     bg_loop
@@ -354,13 +342,8 @@ bg_schedule0:
 ;check dma0
        PRU_IPC_RX_CH0Q sched_done, r2, XFR2VBUS_XID_READ0
 ; have new packet in r2= len-flags
- .if $isdefed("PSILOOP")
-       PSILOOP_TX_INIT r2, XFR2VBUS_XID_READ0
-;don't pingpong with PSILOOP!
- .else
        TX_TASK_INIT2_shell     r2
        set     GRegs.tx.b.flags, GRegs.tx.b.flags, f_next_dma
- .endif
        TM_ENABLE
        jmp     bg_loop
 bg_chk1:
@@ -371,23 +354,6 @@ bg_chk1:
        TM_ENABLE
        jmp     bg_loop
 
-bg_schedule1:
-;error case (underflow)
-;todo
-       ldi     GRegs.tx.b.state, TX_S_IDLE
-       TM_ENABLE
-       jmp     bg_loop
- .if $isdefed("PSILOOP")
-bg_schedulePL:
-;psi loopback
-       flip_tx_r10_r23
-       PSILOOP_TX_POLL XFR2VBUS_XID_READ0, psi_poll_done, psi_poll_done
-psi_poll_done:
-       flip_tx_r10_r23
-       TM_ENABLE
-       jmp     bg_loop
- .endif
-
 ;-------------------------------------
 ; done with packets.
 ;-------------------------------------
@@ -414,7 +380,7 @@ bg_done:
 
 ;---------------------------------------------------------------------
 ; TX_EOF  EvENT {{{1
-;----------------------------------------------------------------------
+;---------------------------------------------------------------------
 TX_EOF:
        qbne    tx_underflow, GRegs.tx.b.state, TX_S_W_EOF
 ; TX TS processing
@@ -425,46 +391,27 @@ TX_EOF:
        sbbo    &r2, r10, 0, 8
        SPIN_TOG_LOCK_LOC       PRU_RTU_TX_TS_READY
 no_tx_ts:
-       flip_tx_r0_r23
-
-;-----------------------------
-;Legit EOF. Restore registers
-;-----------------------------
-legit_tx_eof:
-       flip_tx_r0_r23
        qbbs    teof_chk1, GRegs.tx.b.flags, f_next_dma
-;check dma0
        PRU_IPC_RX_CH0Q no_new_tx, r2, XFR2VBUS_XID_READ0
-; have new packet in r2= len-flags
        TX_TASK_INIT2   r2
        set     GRegs.tx.b.flags, GRegs.tx.b.flags, f_next_dma 
        jmp     tx_eof_on_deck_done
 teof_chk1:
-;check 2nd dma
        PRU_IPC_RX_CH0Q no_new_tx, r3, XFR2VBUS_XID_READ1
        TX_TASK_INIT2   r3
        clr     GRegs.tx.b.flags, GRegs.tx.b.flags, f_next_dma
 
-;started next pkt, terminate task
 tx_eof_on_deck_done:
        TM_YIELD
-;these next 2 instructions are done in delayed branch fashion
        flip_tx_r0_r23
        add     GRegs.pkt_cnt.w.tx, GRegs.pkt_cnt.w.tx, 1
        loop_here
 
-;---------------------------------------------
-;eof w/ no new packet to TX
-;---------------------------------------------
 no_new_tx:
        ldi     GRegs.tx.b.state, TX_S_IDLE
-       TM_YIELD
-       add     GRegs.pkt_cnt.w.tx, GRegs.pkt_cnt.w.tx, 1
-       flip_tx_r0_r23
-       loop_here
+       qba     tx_eof_on_deck_done
 
 ;------exception cases------
-;underflow case:
 tx_underflow:
        ldi     GRegs.tx.b.state, TX_S_ERR
        TM_YIELD
@@ -480,49 +427,16 @@ tx_underflow:
 ;----------------------------------------------------------------------
 TX_FIFO:
        qbeq    handle_portq, GRegs.tx.b.state, TX_S_ACTIVE
-;ignore rest
        TM_YIELD
        loop_here
 
-;----------------------
-; FROM PORTQ CASE
-;----------------------
 handle_portq:
        flip_tx_r0_r23
-;
-;check to see if need to preempt!
-; conditions:  preempt enabled on port and pkt is preemptible
-;              and enuf bytes sent and  enuf bytes left and
-;              (hold set or Express Frame waiting )
-;if not preemptible pkt skip all
-       qbbs    skip_preempt, TxRegs.ds_flags, 4 ; R_TX_D1.f_desc_express
-       qbne    skip_preempt, TxRegs.pp_ppok, PPOK
-       qbbs    do_preempt, GRegs.tx.b.flags, f_tx_hold
-       qbbs    do_preempt, GRegs.tx.b.flags, f_tx_efq
-       qbbc    skip_preempt, GRegs.tx.b.flags, f_tx_efqd
-do_preempt:
-       END_TX_MCRC     ;send MCRC
-       mov     TxRegs.stash_ds_flags, TxRegs.ds_flags
-       mov     TxRegs.stash_tx_len, GRegs.tx.b.len
-
-       set     GRegs.tx.b.flags, GRegs.tx.b.flags, f_tx_stash ;so we know
-       ldi     GRegs.tx.b.state, TX_S_W_PEOF
-       TM_YIELD
-       flip_tx_r0_r23
-       add     TxRegs.pp_count, TxRegs.pp_count, 1
-       loop_here
-
-skip_preempt:
-;assume data is here
        TX_FILL_FIFO    XFR2VBUS_XID_READ0
        TM_YIELD
        flip_tx_r0_r23
        loop_here
 
-;-------------------------------------------------------------------------
-; End TX_FIFO  EVENT
-;-------------------------------------------------------------------------
-
 ;-------------------------------------------------------------------------
 ;RXTX_ERR EVENT  ; {{{1
 ; assume rx issue.
index 0077fad07204867f3e8fb4c8c7a1cc550e96efcf..10c5274a90fa53cabdb50c985a0e6d8a811c9a75 100644 (file)
@@ -121,19 +121,7 @@ $3:        ; non_empty00
        mov     r2, r8
        RTU_IPC_TX_CH0_PPKT
 
-;PSILOOPBACK ..
- .if $isdefed("PSILOOP")
-;read iep for 'rx timestamp' (raw iep counter)
-       GET_FW_TS r2
-       clr     GRrtu.flags, GRrtu.flags, f_dmau  ;!! in PSI loopback we use just 1 dma !!
- .endif
        PAGE_SAVE2 SCHED_MAIN
- .if $isdefed("PSILOOP")
-       PAGE_RESTORE2_REG RTU_GSTATE, 32
-       mov r11.w0, GS_DEF_FLOW
-       PSI_GET_INFO2 PSI_INFO_SLOT, r11.w0
-       PSI_WRITEG
- .endif
        jmp     done?
 
 use_dma1?:
index 078272e1b71df51ca07124d63d3662174cf37fc7..819a674e1845ac6cf69dbef33340442b0ed041cd 100644 (file)
@@ -60,9 +60,6 @@
 ;for TX_Q
 ; see bsram_pru.h for slot/size
 
-;need_to_preempt
-;(f_tx_hold || f_tx_efq ) && f_pp_active && TX_S_ACTIVE && f_frame_preemptible && (PP_afs_tx> PP_afs_rem) &&(tx_len>64)
-
 ;macros to end tx
 
 ;end w/ CRC
@@ -160,30 +157,29 @@ TX_TASK_INIT2     .macro  r_d
 ;start things off
 ;set TX fifo mode according to TX_D1 flags..  todo
  .if $isdefed("VLAN_ENABLED")
-       qbbc no_pa0?, TxRegs.pp_ppok, f_pp_active
-       qbbs no_pa0?, TxRegs.ds_flags, 4;f_desc_express
-       ldi     TxRegs.pp_afs_tx, 0  ;clear bytes sent so far
-       set     TxRegs.pp_ppok, TxRegs.pp_ppok, f_pp_enufleft  ;enuf bytes left to preempt
-       clr     TxRegs.pp_ppok, TxRegs.pp_ppok, f_pp_enufsent  ;NOT enuf bytes sent to preempt yet
-       SOP_TAG_STUFF_PP load_fifo?
-       jmp load_fifo?
-no_pa0?:
        SOP_TAG_STUFF load_fifo?
- .else
-;P-pkt
-       qbbc    no_pa?, TxRegs.pp_ppok, f_pp_active
-       qbbs    no_pa?, TxRegs.ds_flags, 4 ;f_desc_express
-       ldi     TxRegs.pp_afs_tx, 0;clear bytes sent so far
-       set     TxRegs.pp_ppok, TxRegs.pp_ppok, f_pp_enufleft ;enuf bytes left to preempt
-       clr     TxRegs.pp_ppok, TxRegs.pp_ppok, f_pp_enufsent ;NOT enuf bytes sent to preempt yet
-       TX_START_PRE
-no_pa?:
  .endif
 load_fifo?:
        ldi     GRegs.tx.b.state, TX_S_ACTIVE
        TX_FILL_FIFO XFR2VBUS_XID_READ0
  .endm
 
+
+FROM_DMA_TO_TXL2 .macro runit
+       XFR2VBUS_WAIT4READY runit
+       XFR2VBUS_READ64_RESULT runit
+$1:    xin     TXL2, &r19, 4
+       qbne    $1, r19.b2, 0
+       xout    TXL2, &r2, 64
+       .endm
+
+LAST_DMA_TO_TXL2 .macro runit
+       XFR2VBUS_WAIT4READY runit
+       XFR2VBUS_CANCEL_READ_AUTO_64_CMD (runit)
+       nop
+       XFR2VBUS_READ64_RESULT (runit)
+       BN_TX_N GRegs.tx.b.len
+       .endm
 ;------------------------------------
 ;basic macro for TX fifo filling from MSMC
 ; portQ
@@ -194,47 +190,21 @@ TX_FILL_FIFO      .macro  runit
 ;read in data (now in r2 -r17)  [note: on eop some of this may be garbage]
        qbbs    $2, TxRegs.ds_flags, 4   ; TxRegs.ds_flags.f_desc_read_unit
        qbge    $4, GRegs.tx.b.len, 64
-       XFR2VBUS_WAIT4READY runit
-       XFR2VBUS_READ64_RESULT runit
-wait1?: xin    TXL2, &r19, 4
-       qbne    wait1?, r19.b2, 0
-       xout    TXL2, &r2, 64
+       FROM_DMA_TO_TXL2 runit
        jmp     $3
-$2:
-       qbge    $5, GRegs.tx.b.len, 64
-       XFR2VBUS_WAIT4READY (runit + 1)
-       XFR2VBUS_READ64_RESULT (runit+1)
-wait2?: xin    TXL2, &r19, 4
-       qbne    wait2?, r19.b2, 0
-       xout    TXL2, &r2, 64
-$3:
-;output data
-       sub     GRegs.tx.b.len, GRegs.tx.b.len, 64
-       qblt    $9, GRegs.tx.b.len, 64
-       clr     TxRegs.pp_ppok, TxRegs.pp_ppok, f_pp_enufleft
+$2:    qbge    $5, GRegs.tx.b.len, 64
+       FROM_DMA_TO_TXL2 (runit + 1)
+$3:    sub     GRegs.tx.b.len, GRegs.tx.b.len, 64
        jmp     $9
 
-$4:   ;eop, unit a
-       XFR2VBUS_WAIT4READY runit
-       XFR2VBUS_CANCEL_READ_AUTO_64_CMD (runit)
-       nop
-       XFR2VBUS_READ64_RESULT (runit)
-       BN_TX_N GRegs.tx.b.len
-       SPIN_SET_LOCK_LOC PRU_RTU_EOD_P_FLAG
-       SPIN_CLR_LOCK_LOC PRU_RTU_EOD_P_FLAG
+$4:    LAST_DMA_TO_TXL2 runit
+       SPIN_TOG_LOCK_LOC PRU_RTU_EOD_P_FLAG
        jmp     $6
-$5:   ;eop, unit b
-       XFR2VBUS_WAIT4READY (runit + 1)
-       XFR2VBUS_CANCEL_READ_AUTO_64_CMD (runit+1)
-       nop
-       XFR2VBUS_READ64_RESULT (runit+1)
-       BN_TX_N GRegs.tx.b.len
-       SPIN_SET_LOCK_LOC PRU_RTU_EOD_E_FLAG
-       SPIN_CLR_LOCK_LOC PRU_RTU_EOD_E_FLAG
-$6:
-;close out tx
-       qbbs    $7, TxRegs.ds_flags, 0   ;TxRegs.ds_flags.f_desc_do_crc
-       set     r31, r31, 29 ;tx.eof
+$5:    LAST_DMA_TO_TXL2 (runit + 1)
+       SPIN_TOG_LOCK_LOC PRU_RTU_EOD_E_FLAG
+$6:    ;close out tx
+       qbbs    $7, TxRegs.ds_flags, 0  ;f_desc_do_crc
+       set     r31, r31, 29            ;tx.eof
        jmp     $8
 
 $7:    or      r31.b3, r31.b3, 0x2c
index 3e050872d6bfbc26f459f37d277638199c46d057..4de59b5cd66f7af421c39edb2ff3f8c3520c5628 100644 (file)
@@ -111,8 +111,7 @@ XFR2VBUS_READ64_RESULT      .macro   rnum
 
 XFR2VBUS_WAIT4READY .macro rnum
 $1:    xin     rnum, &r18, 4
-       qbeq    $2, r18.w0, 0x5
-$2:
+       qbne    $1, r18.w0, 0x5
  .endm
 
 ;read in data8