Data Sheet
Ethernet Controller I210 —Initialization
154
b. If one of the bits is set (firmware or other software owns the resource), software tries again later.
4. Release ownership of the software/software semaphore and the software/firmware semaphore by
clearing SWSM.SMBI and SWSM.SWESMBI bits.
5. At this stage, the shared resources is owned by the software device driver and it might access it.
The SWSM and SW_FW_SYNC registers can now be used to take ownership of another shared
resources.
Note: Software ownership of SWSM.SWESMBI bit should not exceed 100 ms. If software takes
ownership for a longer duration, firmware might implement a timeout mechanism and take
ownership of the SWSM.SWESMBI bit.
Note: Software ownership of bits in the SW_FW_SYNC register should not exceed 1 second. If
software takes ownership for a longer duration, firmware might implement a timeout
mechanism and take ownership of the relevant SW_FW_SYNC bits.
4.6.2 Releasing Ownership Over a Shared Resource
The following flow should be used to release a shared resource:
1. Get ownership of the software/software semaphore SWSM.SMBI (offset 0x5B50 bit 0).
a. Read the SWSM register.
b. If SWSM.SMBI is read as zero, the semaphore was taken.
c. Otherwise, go back to step a.
This step assures that other software will not access the shared resources register
(SW_FW_SYNC).
2. Get ownership of the software/firmware semaphore SWSM.SWESMBI (offset 0x5B50 bit 1):
a. Set the SWSM.SWESMBI bit.
b. Read SWSM.
c. If SWSM.SWESMBI was successfully set - the semaphore was acquired - otherwise, go back to
step a.
This step assures that the internal firmware will not access the shared resources register
(SW_FW_SYNC).
3. Clear the bit in SW_FW_SYNC that controls the software ownership of the resource to indicate this
resource is free.
4. Release ownership of the software/software semaphore and the software/firmware semaphore by
clearing SWSM.SMBI and SWSM.SWESMBI bits.
5. At this stage, the shared resource are released by the driver and it may not access it. The SWSM
and SW_FW_SYNC registers can now be used to take ownership of another shared resource.