diff --git a/doc/driver-model/UDM-block.txt b/doc/driver-model/UDM-block.txt
index 5d5c7760176742989858fdec6b1cbf2f0f461e79..b42ec69c941df96f62b0f450436f1da97286d560 100644
--- a/doc/driver-model/UDM-block.txt
+++ b/doc/driver-model/UDM-block.txt
@@ -93,7 +93,7 @@ I) Overview
       uchar ide_read_register(int dev, unsigned int port);
       void  ide_write_register(int dev, unsigned int port, unsigned char val);
       void  ide_read_data(int dev, ulong *sect_buf, int words);
-      void  ide_write_data(int dev, ulong *sect_buf, int words);
+      void  ide_write_data(int dev, const ulong *sect_buf, int words);
 
     The first two functions are called from ide_inb()/ide_outb(), and will
     default to direct memory access if CONFIG_IDE_AHB is not set, or
diff --git a/drivers/block/ftide020.c b/drivers/block/ftide020.c
index ad8fdad7c228756f56a73cf585284769c4618e0f..61900ba248a01c5ca5e50b1ef1343cdf5437ff0a 100644
--- a/drivers/block/ftide020.c
+++ b/drivers/block/ftide020.c
@@ -81,7 +81,7 @@ void ide_write_register(int dev, unsigned int port, unsigned char val)
 		IDE_REG_DA_WRITE(port) | val);
 }
 
-void ide_write_data(int dev, ulong *sect_buf, int words)
+void ide_write_data(int dev, const ulong *sect_buf, int words)
 {
 	static struct ftide020_s *ftide020 = (struct ftide020_s *) FTIDE_BASE;
 
diff --git a/include/ide.h b/include/ide.h
index 59ea9758a7d90e0d43033a81ab3a74a0eee77cf6..0269d516dc6d768e1a757a573206dc474a8d4052 100644
--- a/include/ide.h
+++ b/include/ide.h
@@ -76,7 +76,7 @@ int ide_device_present(int dev);
 unsigned char ide_read_register(int dev, unsigned int port);
 void ide_write_register(int dev, unsigned int port, unsigned char val);
 void ide_read_data(int dev, ulong *sect_buf, int words);
-void ide_write_data(int dev, ulong *sect_buf, int words);
+void ide_write_data(int dev, const ulong *sect_buf, int words);
 #endif
 
 /*