diff --git a/board/keymile/common/qrio.c b/board/keymile/common/qrio.c
index 5401bdd..b433f69 100644
--- a/board/keymile/common/qrio.c
+++ b/board/keymile/common/qrio.c
@@ -20,7 +20,7 @@
 
 void show_qrio(void)
 {
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 	u16 id_rev = in_be16(qrio_base + ID_REV_OFF);
 
 	printf("QRIO: id = %u, revision = %u\n",
@@ -33,7 +33,7 @@
 {
 	u8 slftest;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	slftest = in_8(qrio_base + SLFTEST_OFF);
 
@@ -46,7 +46,7 @@
 {
 	u8 pgy_pres;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	pgy_pres = in_8(qrio_base + BPRTH_OFF);
 
@@ -57,7 +57,7 @@
 {
 	u32 gprt;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	gprt = in_be32(qrio_base + port_off + GPRT_OFF);
 
@@ -68,7 +68,7 @@
 {
 	u32 gprt, mask;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	mask = 1U << gpio_nr;
 
@@ -85,7 +85,7 @@
 {
 	u32 direct, mask;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	mask = 1U << gpio_nr;
 
@@ -100,7 +100,7 @@
 {
 	u32 direct, mask;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	mask = 1U << gpio_nr;
 
@@ -113,7 +113,7 @@
 {
 	u32 direct, mask;
 
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	mask = 1U << gpio_nr;
 
@@ -133,7 +133,7 @@
 void qrio_wdmask(u8 bit, bool wden)
 {
 	u16 wdmask;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	wdmask = in_be16(qrio_base + WDMASK_OFF);
 
@@ -150,7 +150,7 @@
 void qrio_prst(u8 bit, bool en, bool wden)
 {
 	u16 prst;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	qrio_wdmask(bit, wden);
 
@@ -170,7 +170,7 @@
 {
 	unsigned long prstcfg;
 	u8 i;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	prstcfg = in_be32(qrio_base + PRSTCFG_OFF);
 
@@ -191,7 +191,7 @@
 void qrio_set_leds(void)
 {
 	u8 ctrlh;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	/* set UNIT LED to RED and BOOT LED to ON */
 	ctrlh = in_8(qrio_base + CTRLH_OFF);
@@ -205,7 +205,7 @@
 void qrio_enable_app_buffer(void)
 {
 	u8 ctrll;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	/* enable application buffer */
 	ctrll = in_8(qrio_base + CTRLL_OFF);
@@ -219,7 +219,7 @@
 void qrio_cpuwd_flag(bool flag)
 {
 	u8 reason1;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	reason1 = in_8(qrio_base + REASON1_OFF);
 	if (flag)
@@ -246,7 +246,7 @@
 bool qrio_reason_unitrst(void)
 {
 	u16 reason;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	reason = in_be16(qrio_base + REASON1_OFF);
 
@@ -258,7 +258,7 @@
 void qrio_uprstreq(u8 mode)
 {
 	u32 rstcfg;
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 
 	rstcfg = in_8(qrio_base + RSTCFG_OFF);
 
@@ -277,7 +277,7 @@
 
 ulong early_bootcount_load(void)
 {
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 	u16 id_rev = in_be16(qrio_base + ID_REV_OFF);
 	u8 id = (id_rev >> 8) & 0xff;
 	u8 rev = id_rev & 0xff;
@@ -295,7 +295,7 @@
 
 void early_bootcount_store(ulong ebootcount)
 {
-	void __iomem *qrio_base = (void *)CONFIG_SYS_QRIO_BASE;
+	void __iomem *qrio_base = (void *)CFG_SYS_QRIO_BASE;
 	u16 id_rev = in_be16(qrio_base + ID_REV_OFF);
 	u8 id = (id_rev >> 8) & 0xff;
 	u8 rev = id_rev & 0xff;
