diff --git a/mote/v2/openwrt/package/avrdude/patches/140-allow_GPIO0_as_pin.patch b/mote/v2/openwrt/package/avrdude/patches/140-allow_GPIO0_as_pin.patch new file mode 100644 index 0000000..97fec20 --- /dev/null +++ b/mote/v2/openwrt/package/avrdude/patches/140-allow_GPIO0_as_pin.patch @@ -0,0 +1,95 @@ +--- avrdude-5.10/config_gram.y.orig 2010-11-05 11:01:14.895247246 +0100 ++++ avrdude-5.10/config_gram.y 2010-11-05 11:02:15.219259178 +0100 +@@ -1212,10 +1212,10 @@ + + value = v->value.number; + +- if ((value <= 0) || (value >= 18)) { ++ if ((value < 0) || (value >= 18)) { + fprintf(stderr, + "%s: error at line %d of %s: pin must be in the " +- "range 1-17\n", ++ "range 0-17\n", + progname, lineno, infile); + exit(1); + } +--- avrdude-5.10/gpio.c.orig 2010-11-05 20:46:03.363248072 +0100 ++++ avrdude-5.10/gpio.c 2010-11-05 20:46:10.051256461 +0100 +@@ -101,6 +101,26 @@ + + + ++static int gpio_rdy_led(PROGRAMMER * pgm, int value) ++{ ++ /* nothing */ ++} ++ ++static int gpio_err_led(PROGRAMMER * pgm, int value) ++{ ++ /* nothing */ ++} ++ ++static int gpio_pgm_led(PROGRAMMER * pgm, int value) ++{ ++ /* nothing */ ++} ++ ++static int gpio_vfy_led(PROGRAMMER * pgm, int value) ++{ ++ /* nothing */ ++} ++ + static void gpio_display(PROGRAMMER *pgm, const char *p) + { + /* nothing */ +@@ -128,40 +148,34 @@ + + static int gpio_open(PROGRAMMER *pgm, char *port) + { +- int i; +- +- bitbang_check_prerequisites(pgm); +- + if ((gpio_fd = open("/dev/gpio", O_RDWR)) < 0) { + perror("cannot open /dev/gpio"); + return -1; + } + +- for (i = 0; i < N_PINS; i++) { +- if (i == PIN_AVR_MISO) +- _gpio_dir(pgm->pinno[i], AVRDUDE_GPIO_DIR_IN); +- else +- _gpio_dir(pgm->pinno[i], AVRDUDE_GPIO_DIR_OUT); +- } ++ _gpio_dir(pgm->pinno[PIN_AVR_RESET], AVRDUDE_GPIO_DIR_OUT); ++ _gpio_dir(pgm->pinno[PIN_AVR_SCK], AVRDUDE_GPIO_DIR_OUT); ++ _gpio_dir(pgm->pinno[PIN_AVR_MOSI], AVRDUDE_GPIO_DIR_OUT); ++ _gpio_dir(pgm->pinno[PIN_AVR_MISO], AVRDUDE_GPIO_DIR_IN); + +- return(0); ++ return 0; + } + + static void gpio_close(PROGRAMMER *pgm) + { + gpio_setpin(pgm, pgm->pinno[PIN_AVR_RESET], 1); + close(gpio_fd); +- return; ++ return 0; + } + + void gpio_initpgm(PROGRAMMER *pgm) + { + strcpy(pgm->type, "GPIO"); + +- pgm->rdy_led = bitbang_rdy_led; +- pgm->err_led = bitbang_err_led; +- pgm->pgm_led = bitbang_pgm_led; +- pgm->vfy_led = bitbang_vfy_led; ++ pgm->rdy_led = gpio_rdy_led; ++ pgm->err_led = gpio_err_led; ++ pgm->pgm_led = gpio_pgm_led; ++ pgm->vfy_led = gpio_vfy_led; + pgm->initialize = bitbang_initialize; + pgm->display = gpio_display; + pgm->enable = gpio_enable;