* Accept and store float frequency values
* Unify PLL resolver for 1366/1368/1370
Pick the closest frequency to the requested target. If there are multiple PLL settings, pick the one with first the lowest VDO frequency, and finally the lowest posdividers.
Merged frequency ramp start and loop. This solves overshooting when requesting a target frequency within the current step size. It also eliminates the duplicate setting of the target frequency is that's on a step boundary.
Cleaned up several unused defines.
* Restore postdiv2 < postdiv1 condition for BM1368 and BM1370
* Whitespace
* Clean up intermediate functions
Simplify frequency_transition further, finally fix overshoot
* Code cleanup
* Add debug logging for BM1397
* Fix log
* Flip postdiv condition for readability
* Add test
* Fix BM1370 fb_range
* EOF line in test_pll.c
- Extract BM##_set_job_difficulty_mask into a single function
- Set self_test difficulty before ASIC_init to eliminate ASIC_set_job_difficulty_mask
- Fixed some capitalisations of GLOBAL_STATE and some others
- Thermal.c: pass DEVICE_CONFIG by pointer instead of by value
* Update crc.c
crc files from Mecanix
* Create crc.h
Part of the crc alternative suggested by Mecanix
* Update crc.h
Wrong cut& paste, sorry
* Delete components/asic/crc.h
File in wrong directory
* Update crc.h
* Update TPS546.c
Initialize variables so the code can be compiled with -O2 option.
* Add mock-up of device name and model on logo screen
* Remove nvs_get_wifi_credits
* Proof of concept for code review
* Fix merge
* Refactored vcore.c
* Log simplification
* Fix missed field rename
* Refactor self-test
* Refactor power.c
* Move Power_disable into VCORE_set_voltage
* Restore ASIC log line
* Clean up self-test.c
* Remove unused constants
* Ultra uses EMC2101 internal temperature sensor
* Simplify thermal configuration
* Set power_offset to 10W for GT (#867)
* Hex is BM1366
* Add board_version 600
* Use boardVersion from config in http response
* Fix GammaTurbo EMC2103 init
* Add Max 0.11 and Ultra 2.2 board versions
* Flip 0.11 and 2.2
* Merge branch 'dev-latest' into HEAD
* Move frequency and voltage options and defaults to device_config.h
* Fix voltage_options loop
* Fix missing frequency and voltage options for BM1368
* Add swarm colors
* Add new fields to openapi.yaml
* Fix asic_job_frequency for Max
* Fix merge
* global_state: Remove unused bm1397Module
The asic frequency is stored in POWER_MANAGEMENT_MODULE->frequency_value.
Signed-off-by: Robin van der Gracht <robinvandergracht@gmail.com>
* Remove unused bm1397Module
---------
Signed-off-by: Robin van der Gracht <robinvandergracht@gmail.com>
Co-authored-by: Robin van der Gracht <robinvandergracht@gmail.com>
* Verify CHIP_ID response
Fixes#740
* Log warning on CHIP_ID mismatch
* Fix CHIP_ID checksum calculation
* On BM1397, CORE_NUM should be 0x18
* CORE_NUM and ADDR log only and early exit when no chips are detected
* Fix compile error
* Refactored out duplicated code
Moved count_asic_chips and receive_work functions to common.c
Moved asic_response_buffer to local scope
Unified preamble and crc check on serial rx
Fixed typo in proccess_work
Moved CRC5_MASK define to proper location
* Change receive_work read timeout log to debug
* Changed wrong log to debug
* Fix merge
* Fix length check for bm1397
* add ASIC TX dubugging on BM1397 (crap, does this fix the ticket mask?!)
---------
Co-authored-by: Skot <skot@bitnet.cx>
* feat: frequency transition
* remove floats that are unnecessary
* fix: callback of set_freq function
* refactor asic model code to asic.c
* fix: change namining scheme
* initial changes for the gammaturbo bringup
* added preliminary TPS546 changes
* added preliminary EMC2103 support
* ASIC temp seems to be maybe working.
* magically now fan seems to have the right polarity
* added in ideality and beta constants (currently unused). Fixed EMC2103_get_fan_speed()
* abstract fan and ASIC temp into thermal functions
* abstracted voltage regulator specifics out of tasks and into power.c and vcore.c functions
* add TPS546 support for multiple models
* move TPS40305/DS4432U vout setter to DS4432U.c
* move all ASIC specific functions to asic.c
* bad device_model nvs handling
* remove old code
* add workaround for TPS546 VIN_UV_WARN_LIMIT silicon bug.
* switched selftest fail to be non fatal
* switched to BOOT longpress to reboot after selftest
* lots and lots of error handling cleanup. <slippery slope>
* move around the DS4432U_Init() function call
* temp sensor fixes
* fix emc2101 external temp sign reading
* reset self test file
* Make the emc2101 changes specific to BM1370
---------
Co-authored-by: Benjamin Wilson <admin@opensourceminer.com>
* add common vars to control rx warning behavoir
* rename vars, reduce rx timout value, add warning when 20s of consecutive rx timeouts occour
* rename device to asic
* better naming of warning condition variable
* move counter variables into the ASIC source files
* move constants to defines and counters to local vars
* fix stray semicolon
Co-authored-by: Skot <skot@bitnet.cx>
* move ADC_init() before start_http_server() because the UI reads the ADC
* split SYSTEM_init() into separate functions. cleaned up nvs init.
* fix my dumb INA260_init() memory leak
* SYSTEM_init_peripherals() cleanup
Fix all compiler warnings and migrate off depreciated ADC and I2C libraries.
---------
Co-authored-by: Erik Olof Gunnar Andersson <eandersson@users.noreply.github.com>
* make set version mask a function call
* update name
* update init fuc to support version mask setting
* update parameter spec for bm1397
* parametrize set version rolling and update init func for BM136X +
* add default stratum mask
* update all bmchips with a new set_version_mask ASIC function which can be called in main
* update init func prototype params
* update self test to remove extra vmask call in init
* fix compiler errors
* fix compiler errors in main
* add version_mask_given bool to tell the next job to set a new version mask to the chip when a smg comes in