Skip to content

Commit

Permalink
Add Avalon921 support
Browse files Browse the repository at this point in the history
  • Loading branch information
XzxEmbedded authored and Johnson-Fan committed Sep 11, 2018
1 parent 431b0c2 commit fbc869b
Show file tree
Hide file tree
Showing 9 changed files with 3,323 additions and 8 deletions.
4 changes: 4 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,10 @@ if HAS_AVALON8
cgminer_SOURCES += driver-avalon8.c driver-avalon8.h
endif

if HAS_AVALON9
cgminer_SOURCES += driver-avalon9.c driver-avalon9.h
endif

if NEED_I2C_CONTEXT
cgminer_SOURCES += i2c-context.c
endif
Expand Down
2 changes: 1 addition & 1 deletion api.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
defined(USE_MINION) || defined(USE_COINTERRA) || defined(USE_BITMINE_A1) || \
defined(USE_ANT_S1) || defined(USE_ANT_S2) || defined(USE_ANT_S3) || defined(USE_SP10) || \
defined(USE_SP30) || defined(USE_ICARUS) || defined(USE_HASHRATIO) || defined(USE_AVALON_MINER) || \
defined(USE_AVALON7) || defined(USE_AVALON8)
defined(USE_AVALON7) || defined(USE_AVALON8) || defined(USE_AVALON9)
#define HAVE_AN_ASIC 1
#endif

Expand Down
133 changes: 131 additions & 2 deletions cgminer.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ char *curly = ":D";
#include "driver-avalon8.h"
#endif

#ifdef USE_AVALON9
#include "driver-avalon9.h"
#endif

#ifdef USE_AVALON_MINER
#include "driver-avalon-miner.h"
#endif
Expand Down Expand Up @@ -279,6 +283,12 @@ static char *opt_set_avalon8_voltage_level;
static char *opt_set_avalon8_voltage_level_offset;
static char *opt_set_avalon8_freq;
#endif
#ifdef USE_AVALON9
static char *opt_set_avalon9_fan;
static char *opt_set_avalon9_voltage_level;
static char *opt_set_avalon9_voltage_level_offset;
static char *opt_set_avalon9_freq;
#endif
#ifdef USE_AVALON_MINER
static char *opt_set_avalonm_voltage;
static char *opt_set_avalonm_freq;
Expand Down Expand Up @@ -845,7 +855,7 @@ static char *set_int_1_to_65535(const char *arg, int *i)
return set_int_range(arg, i, 1, 65535);
}

#ifdef USE_AVALON8
#if defined(USE_AVALON8) || defined(USE_AVALON9)
static char *set_int_0_to_1(const char *arg, int *i)
{
return set_int_range(arg, i, 0, 1);
Expand Down Expand Up @@ -1629,6 +1639,122 @@ static struct opt_table opt_config_table[] = {
set_int_0_to_7, opt_show_intval, &opt_avalon8_spdhigh,
"Set Avalon8 spdhigh, range 0-7."),
#endif
#ifdef USE_AVALON9
OPT_WITH_CBARG("--avalon9-voltage-level",
set_avalon9_voltage_level, NULL, &opt_set_avalon9_voltage_level,
"Set Avalon9 default level of core voltage, range:[0, 15], step: 1"),
OPT_WITH_CBARG("--avalon9-voltage-level-offset",
set_avalon9_voltage_level_offset, NULL, &opt_set_avalon9_voltage_level_offset,
"Set Avalon9 default offset of core voltage level, range:[-2, 1], step: 1"),
OPT_WITH_CBARG("--avalon9-freq",
set_avalon9_freq, NULL, &opt_set_avalon9_freq,
"Set Avalon9 default frequency, range:[25, 1200], step: 25, example: 800"),
OPT_WITH_ARG("--avalon9-freq-sel",
set_int_0_to_7, opt_show_intval, &opt_avalon9_freq_sel,
"Set Avalon9 default frequency select, range:[0, 7], step: 1, example: 7"),
OPT_WITH_CBARG("--avalon9-fan",
set_avalon9_fan, NULL, &opt_set_avalon9_fan,
"Set Avalon9 target fan speed, range:[0, 100], step: 1, example: 0-100"),
OPT_WITH_ARG("--avalon9-temp",
set_int_0_to_100, opt_show_intval, &opt_avalon9_temp_target,
"Set Avalon9 target temperature, range:[0, 100]"),
OPT_WITH_ARG("--avalon9-polling-delay",
set_int_1_to_65535, opt_show_intval, &opt_avalon9_polling_delay,
"Set Avalon9 polling delay value (ms)"),
OPT_WITH_ARG("--avalon9-aucspeed",
opt_set_intval, opt_show_intval, &opt_avalon9_aucspeed,
"Set AUC3 IIC bus speed"),
OPT_WITH_ARG("--avalon9-aucxdelay",
opt_set_intval, opt_show_intval, &opt_avalon9_aucxdelay,
"Set AUC3 IIC xfer read delay, 4800 ~= 1ms"),
OPT_WITH_ARG("--avalon9-smart-speed",
opt_set_intval, opt_show_intval, &opt_avalon9_smart_speed,
"Set Avalon9 smart speed, range 0-1. 0 means Disable"),
OPT_WITH_ARG("--avalon9-th-pass",
set_int_0_to_65535, opt_show_intval, &opt_avalon9_th_pass,
"Set A3206 th pass value"),
OPT_WITH_ARG("--avalon9-th-fail",
set_int_0_to_65535, opt_show_intval, &opt_avalon9_th_fail,
"Set A3206 th fail value"),
OPT_WITH_ARG("--avalon9-th-init",
set_int_0_to_65535, opt_show_intval, &opt_avalon9_th_init,
"Set A3206 th init value"),
OPT_WITH_ARG("--avalon9-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_th_ms,
"Set A3206 th ms value"),
OPT_WITH_ARG("--avalon9-th-timeout",
opt_set_uintval, opt_show_uintval, &opt_avalon9_th_timeout,
"Set A3206 th timeout value"),
OPT_WITH_ARG("--avalon9-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_th_add,
"Set A3206 th add value"),
OPT_WITH_ARG("--avalon9-th-mssel",
set_int_0_to_1, opt_show_intval, &opt_avalon9_th_mssel,
"Set A3206 th mssel value"),
OPT_WITH_ARG("--avalon9-lv2-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_lv2_th_add,
"Set A3206 lv2 th add value"),
OPT_WITH_ARG("--avalon9-lv2-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_lv2_th_ms,
"Set A3206 lv2 th ms value"),
OPT_WITH_ARG("--avalon9-lv3-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_lv3_th_add,
"Set A3206 lv3 th add value"),
OPT_WITH_ARG("--avalon9-lv3-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_lv3_th_ms,
"Set A3206 lv3 th ms value"),
OPT_WITH_ARG("--avalon9-lv4-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_lv4_th_add,
"Set A3206 lv4 th add value"),
OPT_WITH_ARG("--avalon9-lv4-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_lv4_th_ms,
"Set A3206 lv4 th ms value"),
OPT_WITH_ARG("--avalon9-lv5-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_lv5_th_add,
"Set A3206 lv5 th add value"),
OPT_WITH_ARG("--avalon9-lv5-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_lv5_th_ms,
"Set A3206 lv5 th ms value"),
OPT_WITH_ARG("--avalon9-lv6-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_lv6_th_add,
"Set A3206 lv6 th add value"),
OPT_WITH_ARG("--avalon9-lv6-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_lv6_th_ms,
"Set A3206 lv6 th ms value"),
OPT_WITH_ARG("--avalon9-lv7-th-add",
set_int_0_to_1, opt_show_intval, &opt_avalon9_lv7_th_add,
"Set A3206 lv7 th add value"),
OPT_WITH_ARG("--avalon9-lv7-th-ms",
set_int_0_to_32767, opt_show_intval, &opt_avalon9_lv7_th_ms,
"Set A3206 lv7 th ms value"),
OPT_WITHOUT_ARG("--avalon9-iic-detect",
opt_set_bool, &opt_avalon9_iic_detect,
"Enable Avalon9 detect through iic controller"),
OPT_WITH_ARG("--avalon9-nonce-mask",
set_int_24_to_32, opt_show_intval, &opt_avalon9_nonce_mask,
"Set A3206 nonce mask, range 24-32."),
OPT_WITH_ARG("--avalon9-nonce-check",
set_int_0_to_1, opt_show_intval, &opt_avalon9_nonce_check,
"Set A3206 nonce check, range 0-1."),
OPT_WITH_ARG("--avalon9-roll-enable",
set_int_0_to_1, opt_show_intval, &opt_avalon9_roll_enable,
"Set A3206 roll enable, range 0-1."),
OPT_WITH_ARG("--avalon9-mux-l2h",
set_int_0_to_2, opt_show_intval, &opt_avalon9_mux_l2h,
"Set Avalon9 mux l2h, range 0-2."),
OPT_WITH_ARG("--avalon9-mux-h2l",
set_int_0_to_1, opt_show_intval, &opt_avalon9_mux_h2l,
"Set Avalon9 mux h2l, range 0-1."),
OPT_WITH_ARG("--avalon9-h2ltime0-spd",
set_int_0_to_255, opt_show_intval, &opt_avalon9_h2ltime0_spd,
"Set Avalon9 h2ltime0 spd, range 0-255."),
OPT_WITH_ARG("--avalon9-spdlow",
set_int_0_to_7, opt_show_intval, &opt_avalon9_spdlow,
"Set Avalon9 spdlow, range 0-7."),
OPT_WITH_ARG("--avalon9-spdhigh",
set_int_0_to_7, opt_show_intval, &opt_avalon9_spdhigh,
"Set Avalon9 spdhigh, range 0-7."),
#endif
#ifdef USE_AVALON_MINER
OPT_WITH_CBARG("--avalonm-voltage",
set_avalonm_voltage, NULL, &opt_set_avalonm_voltage,
Expand Down Expand Up @@ -2335,6 +2461,9 @@ static char *opt_verusage_and_exit(const char *extra)
#ifdef USE_AVALON8
"avalon8 "
#endif
#ifdef USE_AVALON9
"avalon9 "
#endif
#ifdef USE_AVALON_MINER
"avalon miner"
#endif
Expand Down Expand Up @@ -7440,7 +7569,7 @@ void set_target(unsigned char *dest_target, double diff)
cg_memcpy(dest_target, target, 32);
}

#if defined (USE_AVALON2) || defined (USE_AVALON4) || defined (USE_AVALON7) || defined (USE_AVALON8) || defined (USE_AVALON_MINER) || defined (USE_HASHRATIO)
#if defined (USE_AVALON2) || defined (USE_AVALON4) || defined (USE_AVALON7) || defined (USE_AVALON8) || defined (USE_AVALON9) || defined (USE_AVALON_MINER) || defined (USE_HASHRATIO)
bool submit_nonce2_nonce(struct thr_info *thr, struct pool *pool, struct pool *real_pool,
uint32_t nonce2, uint32_t nonce, uint32_t ntime)
{
Expand Down
25 changes: 21 additions & 4 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,17 @@ if test "x$avalon8" = xyes; then
fi
AM_CONDITIONAL([HAS_AVALON8], [test x$avalon8 = xyes])

avalon9="no"

AC_ARG_ENABLE([avalon9],
[AC_HELP_STRING([--enable-avalon9],[Compile support for Avalon9 (default disabled)])],
[avalon9=$enableval]
)
if test "x$avalon9" = xyes; then
AC_DEFINE([USE_AVALON9], [1], [Defined to 1 if Avalon9 support is wanted])
fi
AM_CONDITIONAL([HAS_AVALON9], [test x$avalon9 = xyes])

avalon_miner="no"

AC_ARG_ENABLE([avalon_miner],
Expand Down Expand Up @@ -517,7 +528,7 @@ fi


#Add a new device to this list if it needs libusb, along with a no on the end.
if test x$avalon$avalon2$avalon4$avalon7$avalon8$avalon_miner$bitforce$bitfury$blockerupter$modminer$bflsc$icarus$hashfast$hashratio$klondike$drillbit$cointerra$ants1$ants3 != xnonononononononononononononononononono; then
if test x$avalon$avalon2$avalon4$avalon7$avalon8$avalon9$avalon_miner$bitforce$bitfury$blockerupter$modminer$bflsc$icarus$hashfast$hashratio$klondike$drillbit$cointerra$ants1$ants3 != xnononononononononononononononononononono; then
want_usbutils=true
else
want_usbutils=false
Expand All @@ -529,7 +540,7 @@ else
want_libbitfury=false
fi

if test x$avalon2$avalon4$avalon7$avalon8$avalon_miner$hashratio != xnononononono; then
if test x$avalon2$avalon4$avalon7$avalon8$avalon9$avalon_miner$hashratio != xnonononononono; then
want_crc16=true
else
want_crc16=false
Expand All @@ -542,7 +553,7 @@ AM_CONDITIONAL([HAVE_CURSES], [test x$curses = xyes])
AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue])
AM_CONDITIONAL([HAVE_x86_64], [test x$have_x86_64 = xtrue])
AM_CONDITIONAL([WANT_CRC16], [test x$want_crc16 != xfalse])
AM_CONDITIONAL([NEED_I2C_CONTEXT], [test x$avalon4$avalon7$avalon8 != xnonono])
AM_CONDITIONAL([NEED_I2C_CONTEXT], [test x$avalon4$avalon7$avalon8$avalon9 != xnononono])
AM_CONDITIONAL([SUPPORT_SSP], [test x$avalon7 != xno])

if test "x$want_usbutils" != xfalse; then
Expand Down Expand Up @@ -781,6 +792,12 @@ else
echo " Avalon8.ASICs........: Disabled"
fi

if test "x$avalon9" = xyes; then
echo " Avalon9.ASICs........: Enabled"
else
echo " Avalon9.ASICs........: Disabled"
fi

if test "x$avalon_miner" = xyes; then
echo " Avalon miner.ASICs...: Enabled"
else
Expand Down Expand Up @@ -898,7 +915,7 @@ else
fi

#Add any new device to this, along with a no on the end of the test
if test "x$avalon$avalon2$avalon4$avalon7$avalon8$avalon_miner$bab$bflsc$bitforce$bitfury$bitfury16$blockerupter$hashfast$hashratio$icarus$klondike$knc$modminer$drillbit$minion$cointerra$bitmine_A1$ants1$ants2$ants3$sp10$sp30" = xnonononononononononononononononononononononononononono; then
if test "x$avalon$avalon2$avalon4$avalon7$avalon8$avalon9$avalon_miner$bab$bflsc$bitforce$bitfury$bitfury16$blockerupter$hashfast$hashratio$icarus$klondike$knc$modminer$drillbit$minion$cointerra$bitmine_A1$ants1$ants2$ants3$sp10$sp30" = xnononononononononononononononononononononononononononono; then
echo
AC_MSG_ERROR([No mining devices configured in])
echo
Expand Down
Loading

0 comments on commit fbc869b

Please sign in to comment.