aboutsummaryrefslogtreecommitdiff
path: root/src/platforms
diff options
context:
space:
mode:
authorGareth McMullin2014-07-30 14:19:46 +1200
committerGareth McMullin2014-07-30 14:19:46 +1200
commitbfe5d1168b705623bf5c672c93aac4edb7d17725 (patch)
treecc8e5ef061bf7f133fd6f80d5086e26edd44c431 /src/platforms
parent7e396b0205bac46ff794ff562141ab131fe0aff1 (diff)
parentc1b1d45155ba666d43d4d26b997b45eef8ff50f8 (diff)
Merge pull request #47 from richardeoin/target-power
Added monitor option to toggle target power
Diffstat (limited to 'src/platforms')
-rw-r--r--src/platforms/native/platform.c13
-rw-r--r--src/platforms/native/platform.h2
-rw-r--r--src/platforms/stm32/jtagtap.c10
3 files changed, 20 insertions, 5 deletions
diff --git a/src/platforms/native/platform.c b/src/platforms/native/platform.c
index 81a54d8..66b84fa 100644
--- a/src/platforms/native/platform.c
+++ b/src/platforms/native/platform.c
@@ -158,7 +158,18 @@ void platform_srst_set_val(bool assert)
gpio_set_val(SRST_PORT, SRST_PIN, !assert);
}
}
-
+bool platform_target_get_power(void) {
+ if (platform_hwversion() > 0) {
+ return gpio_get(PWR_BR_PORT, PWR_BR_PIN);
+ }
+ return 1; // 1 = Unpowered
+}
+void platform_target_set_power(bool power)
+{
+ if (platform_hwversion() > 0) {
+ gpio_set_val(PWR_BR_PORT, PWR_BR_PIN, !power);
+ }
+}
void platform_delay(uint32_t delay)
{
timeout_counter = delay;
diff --git a/src/platforms/native/platform.h b/src/platforms/native/platform.h
index 082f6ef..5ca0408 100644
--- a/src/platforms/native/platform.h
+++ b/src/platforms/native/platform.h
@@ -231,3 +231,5 @@ static inline uint16_t _gpio_get(uint32_t gpioport, uint16_t gpios)
void assert_boot_pin(void);
void setup_vbus_irq(void);
void platform_srst_set_val(bool assert);
+bool platform_target_get_power(void);
+void platform_target_set_power(bool power);
diff --git a/src/platforms/stm32/jtagtap.c b/src/platforms/stm32/jtagtap.c
index 78dd300..2d09b84 100644
--- a/src/platforms/stm32/jtagtap.c
+++ b/src/platforms/stm32/jtagtap.c
@@ -42,10 +42,12 @@ int jtagtap_init(void)
void jtagtap_reset(void)
{
#ifdef TRST_PORT
- volatile int i;
- gpio_clear(TRST_PORT, TRST_PIN);
- for(i = 0; i < 10000; i++) asm("nop");
- gpio_set(TRST_PORT, TRST_PIN);
+ if (platform_hwversion() == 0) {
+ volatile int i;
+ gpio_clear(TRST_PORT, TRST_PIN);
+ for(i = 0; i < 10000; i++) asm("nop");
+ gpio_set(TRST_PORT, TRST_PIN);
+ }
#endif
jtagtap_soft_reset();
}