578 lines
13 KiB
Plaintext
578 lines
13 KiB
Plaintext
TITLE
|
|
Fan Controller (axi_fan_control)
|
|
AXI_FAN_CONTROL
|
|
ENDTITLE
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x00
|
|
VERSION
|
|
Version of the peripheral. Follows semantic versioning. Current version 1.00.a.
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:16] 0x0001
|
|
VERSION_MAJOR
|
|
RO
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[15:8] 0x00
|
|
VERSION_MINOR
|
|
RO
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[7:0] 0x61
|
|
VERSION_PATCH
|
|
RO
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x01
|
|
PERIPHERAL_ID
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''ID''
|
|
PERIPHERAL_ID
|
|
RO
|
|
Value of the ID configuration parameter.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x02
|
|
SCRATCH
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x00000000
|
|
SCRATCH
|
|
RW
|
|
Scratch register useful for debug.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x03
|
|
IDENTIFICATION
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x46414E43
|
|
IDENTIFICATION
|
|
RO
|
|
Peripheral identification ('F', 'A', 'N', 'C').
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x10
|
|
IRQ_MASK
|
|
ENDREG
|
|
|
|
FIELD
|
|
[3] 0x1
|
|
NEW_TACHO_MEASUREMENT
|
|
RW
|
|
Masks the TACHO_MEASUREMENT_DONE IRQ.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[2] 0x1
|
|
TEMP_INCREASE
|
|
RW
|
|
Masks the TEMP_INCREASE IRQ.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[1] 0x1
|
|
TACHO_ERR
|
|
RW
|
|
Masks the TACHO_ERR IRQ.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[0] 0x1
|
|
PWM_CHANGED
|
|
RW
|
|
Masks the PWM_CHANGED IRQ.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x11
|
|
IRQ_PENDING
|
|
ENDREG
|
|
|
|
FIELD
|
|
[3] 0x0
|
|
NEW_TACHO_MEASUREMENT
|
|
RW1C
|
|
This bit will be asserted when the hardware has written a new value to the
|
|
TACHO_MEASUREMENT register if the NEW_TACHO_MEASUREMENT bit in the IRQ_MASK
|
|
register is not set.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[2] 0x0
|
|
TEMP_INCREASE
|
|
RW1C
|
|
This bit will be asserted whenever the HW decides to increase the PWM
|
|
duty-cycle, indicating a rise in temperature, and if the TEMP_INCREASE bit in
|
|
the IRQ_MASK register is not set.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[1] 0x0
|
|
TACHO_ERR
|
|
RW1C
|
|
This bit will be asserted when a fault related to the tacho signal is detected.
|
|
This can either mean that the tacho has not toggled in 5 seconds or that the
|
|
period of the tacho signal is no longer whithin the defined valid interval.
|
|
Also, the TACHO_ERR bit in the IRQ_MASK register must not be set.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[0] 0x0
|
|
PWM_CHANGED
|
|
RW1C
|
|
This bit will be asserted when a 5 second delay expires after the PWM width was
|
|
changed. The delay is used to allow the fan rotation speed to stabilize. Also,
|
|
the PWM_CHANGED bit in the IRQ_MASK register must not be set.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x12
|
|
IRQ_SOURCE
|
|
ENDREG
|
|
|
|
FIELD
|
|
[3] 0x0
|
|
NEW_TACHO_MEASUREMENT
|
|
RO
|
|
This bit will be asserted when the hardware has written a new value to the
|
|
TACHO_MEASUREMENT register.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[2] 0x0
|
|
TEMP_INCREASE
|
|
RO
|
|
This bit will be asserted whenever the hardware decides to increase the PWM
|
|
duty-cycle indicating a rise in temperature.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[1] 0x0
|
|
TACHO_ERR
|
|
RO
|
|
This bit will be asserted when a fault related to the tacho signal is detected.
|
|
This can either mean that the tacho has not toggled in 5 seconds or that the
|
|
period of the tacho signal is no longer whithin the defined valid interval.
|
|
ENDFIELD
|
|
|
|
FIELD
|
|
[0] 0x0
|
|
PWM_CHANGED
|
|
RO
|
|
This bit will be asserted when a 5 second delay expires after the PWM width was
|
|
changed. The delay is used to allow the fan rotation speed to stabilize.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x20
|
|
REG_RSTN
|
|
ENDREG
|
|
|
|
FIELD
|
|
[0] 0x0
|
|
RSTN
|
|
RW
|
|
Reset, default is IN-RESET (0x0), software must write 0x1 to bring up the core.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x21
|
|
PWM_WIDTH
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''PWM_PERIOD''
|
|
PWM_WIDTH
|
|
RW
|
|
This register contains the width of the PWM output signal. By default its
|
|
value is established by the hardware after reading the temperature. By writing
|
|
to this register the software can change the value however this is only possible
|
|
if the requested value is greater than the value selected by the hardware and
|
|
not exceeding the PWM period.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x22
|
|
TACHO_PERIOD
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x00000000
|
|
TACHO_PERIOD
|
|
RW
|
|
After using the PWM_WIDTH register to request a different duty-cycle, the
|
|
software can use this register to define the target period of the tacho signal.
|
|
This is used together with the TACHO_TOLERANCE register to define an interval
|
|
for the tacho signal. This register must be written before the TACHO_TOLERANCE
|
|
register. The hardware will then use this interval to monitor the tacho signal
|
|
coming from the fan.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x23
|
|
TACHO_TOLERANCE
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x00000000
|
|
TACHO_TOLERANCE
|
|
RW
|
|
This register is used together with the TACHO_PERIOD register to define an
|
|
interval for the fan's tacho signal. Writing to this register enables the
|
|
hardware to start monitoring the tacho signal and so it must be written after
|
|
the TACHO_PERIOD register.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x24
|
|
TEMP_DATA_SOURCE
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''INTERNAL_SYSMONE''
|
|
TEMP_DATA_SOURCE
|
|
RO
|
|
This register copies the value from the INTERNAL_SYSMONE register and is used to inform
|
|
the software what the source of the temperature information is.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x30
|
|
PWM_PERIOD
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x4E20
|
|
PWM_PERIOD
|
|
RO
|
|
This register contains the period for the PWM output signal. Derived from the
|
|
PWM_FREQUENCY_HZ parameter.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x31
|
|
TACHO_MEASUREMENT
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x00000000
|
|
TACHO_MEASUREMENT
|
|
RO
|
|
This register contains the measurement results of the tacho signal period
|
|
performed by the hardware.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x32
|
|
TEMPERATURE
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] 0x00000000
|
|
TEMPERATURE
|
|
RO
|
|
This register contains the latest temperature reading from the SYSMONE
|
|
primitive.
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x40
|
|
TEMP_00_H
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_00_H''
|
|
TEMP_00_H
|
|
RW
|
|
Temperature threshold below which PWM should be 0%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x41
|
|
TEMP_25_L
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_25_L''
|
|
TEMP_25_L
|
|
RW
|
|
Temperature threshold above which PWM should be 25%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x42
|
|
TEMP_25_H
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_25_H''
|
|
TEMP_25_H
|
|
RW
|
|
Temperature threshold below which PWM should be 25%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x43
|
|
TEMP_50_L
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_50_L''
|
|
TEMP_50_L
|
|
RW
|
|
Temperature threshold above which PWM should be 50%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x44
|
|
TEMP_50_H
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_50_H''
|
|
TEMP_50_H
|
|
RW
|
|
Temperature threshold below which PWM should be 50%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x45
|
|
TEMP_75_L
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_75_L''
|
|
TEMP_75_L
|
|
RW
|
|
Temperature threshold above which PWM should be 75%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x46
|
|
TEMP_75_H
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_75_H''
|
|
TEMP_75_H
|
|
RW
|
|
Temperature threshold below which PWM should be 75%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x47
|
|
TEMP_100_L
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TEMP_100_L''
|
|
TEMP_100_L
|
|
RW
|
|
Temperature threshold above which PWM should be 100%
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x50
|
|
TACHO_25
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T25''
|
|
TACHO_25
|
|
RW
|
|
Nominal tacho period at 25% PWM
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x51
|
|
TACHO_50
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T50''
|
|
TACHO_50
|
|
RW
|
|
Nominal tacho period at 50% PWM
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x52
|
|
TACHO_75
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T75''
|
|
TACHO_75
|
|
RW
|
|
Nominal tacho period at 75% PWM
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x53
|
|
TACHO_100
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T100''
|
|
TACHO_100
|
|
RW
|
|
Nominal tacho period at 100% PWM
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x54
|
|
TACHO_25_TOL
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T25'' \\ ''*TACHO_TOL_PERCENT'' \\ ''/100''
|
|
TACHO_25_TOL
|
|
RW
|
|
Tolerance for the 25% PWM tacho period
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x55
|
|
TACHO_50_TOL
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T50'' \\ ''*TACHO_TOL_PERCENT'' \\ ''/100''
|
|
TACHO_50_TOL
|
|
RW
|
|
Tolerance for the 50% PWM tacho period
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x56
|
|
TACHO_75_TOL
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T75'' \\ ''*TACHO_TOL_PERCENT'' \\ ''/100''
|
|
TACHO_75_TOL
|
|
RW
|
|
Tolerance for the 75% PWM tacho period
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|
|
|
|
REG
|
|
0x57
|
|
TACHO_100_TOL
|
|
ENDREG
|
|
|
|
FIELD
|
|
[31:0] ''TACHO_T100'' \\ ''*TACHO_TOL_PERCENT'' \\ ''/100''
|
|
TACHO_100_TOL
|
|
RW
|
|
Tolerance for the 100% PWM tacho period
|
|
ENDFIELD
|
|
|
|
############################################################################################
|
|
############################################################################################
|