diff --git a/core/embed/projects/bootloader/poll.c b/core/embed/projects/bootloader/poll.c
index 67f5108fd2..ef62eda1ab 100644
--- a/core/embed/projects/bootloader/poll.c
+++ b/core/embed/projects/bootloader/poll.c
@@ -83,12 +83,7 @@ int16_t poll_events(const uint16_t* ifaces, size_t ifaces_num,
 #endif
 #ifdef USE_BUTTON
       if (iface_num == IFACE_BUTTON) {
-        uint32_t btn_event = button_get_event();
-        uint32_t etype = (btn_event >> 24) & 0x3U;  // button down/up
-        uint32_t btn_number = btn_event & 0xFFFF;
-        if (etype != 0) {
-          event->event.button_event.type = etype;
-          event->event.button_event.button = btn_number;
+        if (button_get_event(&event->event.button_event)) {
           return iface_num;
         }
       }
diff --git a/core/embed/projects/bootloader/poll.h b/core/embed/projects/bootloader/poll.h
index c2c080874b..089a53c779 100644
--- a/core/embed/projects/bootloader/poll.h
+++ b/core/embed/projects/bootloader/poll.h
@@ -49,13 +49,6 @@ typedef enum {
 } ble_data_event_type_t;
 #endif
 
-#ifdef USE_BUTTON
-typedef struct {
-  uint32_t type;
-  button_t button;
-} button_event_t;
-#endif
-
 typedef struct {
   union {
     usb_data_event_type_t usb_data_event;