diff --git a/esp8266/esp_mphal.h b/esp8266/esp_mphal.h
index 82277ed5af0ae1723457b6ef7b1549013ff1a5ec..39cf60ab16dbe4c9cdb628c75d895fa7b8a34204 100644
--- a/esp8266/esp_mphal.h
+++ b/esp8266/esp_mphal.h
@@ -63,7 +63,7 @@ void ets_event_poll(void);
 #include "etshal.h"
 #include "gpio.h"
 #include "esp8266/modpyb.h"
-#define mp_hal_pin_obj_t pyb_pin_obj_t
+#define mp_hal_pin_obj_t pyb_pin_obj_t*
 #define mp_hal_get_pin_obj(o) mp_obj_get_pin_obj(o)
 #define mp_hal_pin_config_od(p) do { \
         ETS_GPIO_INTR_DISABLE(); \
diff --git a/extmod/machine_i2c.c b/extmod/machine_i2c.c
index 061b44378ba63881b35023f786de9b1e1d5d0035..e3bdb36925fa49451dad456ec5c9520d43e415cd 100644
--- a/extmod/machine_i2c.c
+++ b/extmod/machine_i2c.c
@@ -37,8 +37,8 @@
 typedef struct _machine_i2c_obj_t {
     mp_obj_base_t base;
     uint32_t us_delay;
-    mp_hal_pin_obj_t *scl;
-    mp_hal_pin_obj_t *sda;
+    mp_hal_pin_obj_t scl;
+    mp_hal_pin_obj_t sda;
 } machine_i2c_obj_t;
 
 STATIC void mp_hal_i2c_delay(machine_i2c_obj_t *self) {
diff --git a/stmhal/mphalport.h b/stmhal/mphalport.h
index 65de2ab8630a4390653135712e91b02aa4e6b20c..7b29f9c9c048b91b39fca923879a504c01253c20 100644
--- a/stmhal/mphalport.h
+++ b/stmhal/mphalport.h
@@ -43,7 +43,7 @@ void mp_hal_set_interrupt_char(int c); // -1 to disable
 
 // C-level pin HAL
 #include "stmhal/pin.h"
-#define mp_hal_pin_obj_t pin_obj_t
+#define mp_hal_pin_obj_t pin_obj_t*
 #define mp_hal_get_pin_obj(o) (pin_obj_t*)pin_find(o)
 #define mp_hal_pin_config_od(p) mp_hal_gpio_config((p)->gpio, (p)->pin, 5, 0, 0)
 #define mp_hal_pin_low(p) GPIO_clear_pin((p)->gpio, (p)->pin_mask)