diff --git a/libsdhcdrivers/include/sdhc/sdio.h b/libsdhcdrivers/include/sdhc/sdio.h
index cdd3c64..d7dd789 100644
--- a/libsdhcdrivers/include/sdhc/sdio.h
+++ b/libsdhcdrivers/include/sdhc/sdio.h
@@ -27,6 +27,8 @@
     int (*handle_irq)(struct sdio_host_dev *sdio, int irq);
     int (*is_voltage_compatible)(struct sdio_host_dev *sdio, int mv);
     int (*nth_irq)(struct sdio_host_dev *sdio, int n);
+    uint32_t (*get_present_state)(struct sdio_host_dev *sdio);
+
     void *priv;
 };
 typedef struct sdio_host_dev sdio_host_dev_t;
@@ -80,6 +82,19 @@
 }
 
 /**
+ * @brief   Returns Present State Register's value
+ *
+ * @return  Value of the Present State Register, see SD specification for more
+ *          details.
+ */
+static inline uint32_t sdio_get_present_state(
+    sdio_host_dev_t *sdio //!< [in] Sdio handle.
+)
+{
+    return sdio->get_present_state(sdio);
+}
+
+/**
  * Passes control to the IRQ handler of the provided SDIO device
  * @param[in] sdio A handle to an initialised SDIO driver
  * @param[in] irq  The IRQ number that was triggered.
diff --git a/libsdhcdrivers/src/sdhc.c b/libsdhcdrivers/src/sdhc.c
index 29f926e..7710ef7 100644
--- a/libsdhcdrivers/src/sdhc.c
+++ b/libsdhcdrivers/src/sdhc.c
@@ -180,13 +180,12 @@
     }
 }
 
-static inline enum dma_mode get_dma_mode(struct sdhc *host, struct mmc_cmd *cmd) {
-    if (cmd->data == NULL)
-    {
+static inline enum dma_mode get_dma_mode(struct sdhc *host, struct mmc_cmd *cmd)
+{
+    if (cmd->data == NULL) {
         return DMA_MODE_NONE;
     }
-    if (cmd->data->pbuf == 0)
-    {
+    if (cmd->data->pbuf == 0) {
         return DMA_MODE_NONE;
     }
     /* Currently only SDMA supported */
@@ -661,6 +660,10 @@
     }
 }
 
+static uint32_t sdhc_get_present_state_register(sdio_host_dev_t *sdio)
+{
+    return readl(sdio_get_sdhc(sdio)->base + PRES_STATE);
+}
 
 int sdhc_init(void *iobase, const int *irq_table, int nirqs, ps_io_ops_t *io_ops,
               sdio_host_dev_t *dev)
@@ -687,6 +690,7 @@
     dev->send_command = &sdhc_send_cmd;
     dev->is_voltage_compatible = &sdhc_is_voltage_compatible;
     dev->reset = &sdhc_reset;
+    dev->get_present_state = &sdhc_get_present_state_register;
     dev->priv = sdhc;
     /* Clear IRQs */
     writel(0, sdhc->base + INT_STATUS_EN);
