diff --git a/drivers/amlogic/display/osd/Kconfig b/drivers/amlogic/display/osd/Kconfig
index d321ff6f..29d84651 100644
--- a/drivers/amlogic/display/osd/Kconfig
+++ b/drivers/amlogic/display/osd/Kconfig
@@ -46,4 +46,12 @@ config FB_OSD2_CURSOR
 	default n
 	help
 		Select to enable OSD2 cursor.
+
+config FB_SOFT_CURSOR
+	boolean "Framebuffer Soft Cursor Fallback"
+	depends on !FB_OSD2_CURSOR
+	default y
+	help
+		Select to enable soft cursor.
+
 endmenu
diff --git a/drivers/amlogic/display/osd/osd_fb.c b/drivers/amlogic/display/osd/osd_fb.c
index 54220e91..0bf8876a 100644
--- a/drivers/amlogic/display/osd/osd_fb.c
+++ b/drivers/amlogic/display/osd/osd_fb.c
@@ -1131,6 +1131,13 @@ static int osd_cursor(struct fb_info *fbi, struct fb_cursor *var)
 }
 #endif
 
+#if defined(CONFIG_FB_SOFT_CURSOR)
+static int osd_soft_cursor(struct fb_info *fbi, struct fb_cursor *var)
+{
+	return -EINVAL;	/* just to force soft_cursor() call */
+}
+#endif
+
 static int osd_sync(struct fb_info *info)
 {
 	return 0;
@@ -1148,7 +1155,7 @@ static struct fb_ops osd_ops = {
 	.fb_copyarea    = cfb_copyarea,
 	.fb_imageblit   = cfb_imageblit,
 #ifdef CONFIG_FB_SOFT_CURSOR
-	.fb_cursor      = soft_cursor,
+	.fb_cursor      = osd_soft_cursor,
 #elif defined(CONFIG_FB_OSD2_CURSOR)
 	.fb_cursor      = osd_cursor,
 #endif