All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot-Users] cfi_flash.c bug regarding intel k3 devices
@ 2005-05-12 14:28 Konstantin Kletschke
  2005-05-12 14:45 ` Konstantin Kletschke
  2005-05-12 16:15 ` Tolunay Orkun
  0 siblings, 2 replies; 7+ messages in thread
From: Konstantin Kletschke @ 2005-05-12 14:28 UTC (permalink / raw)
  To: u-boot

Hi!

cfi_flash.c handles intel k3 devices not correct, they power up with all
sectors locked. Similair to flash_unlock_seq for amd devices, there must exist
a flash_unlock_seq_intelk3 to do this for intel devices.

--- u-boot-1.1.2/drivers/cfi_flash.c    2004-12-18 23:35:45.000000000 +0100
+++ u-boot-1.1.2-imx1/drivers/cfi_flash.c       2005-05-12 15:59:06.000000000 +0200
@@ -111,6 +111,9 @@
 #define AMD_ADDR_START                 0x555
 #define AMD_ADDR_ACK                   0x2AA

+#define INTEL_CMD_UNLOCK_START         0x60
+#define INTEL_CMD_UNLOCK_ACK           0xD0
+
 #define FLASH_OFFSET_CFI               0x55
 #define FLASH_OFFSET_CFI_RESP          0x10
 #define FLASH_OFFSET_PRIMARY_VENDOR    0x13
@@ -180,6 +183,7 @@
 static void flash_make_cmd (flash_info_t * info, uchar cmd, void *cmdbuf);
 static void flash_write_cmd (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
 static void flash_unlock_seq (flash_info_t * info, flash_sect_t sect);
+static void flash_unlock_seq_intelk3 (flash_info_t * info, flash_sect_t sect);
 static int flash_isequal (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
 static int flash_isset (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
 static int flash_toggle (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd);
@@ -239,7 +243,6 @@
 }
 #endif

-
 /*-----------------------------------------------------------------------
  * read a character at a port width address
  */
@@ -397,6 +400,7 @@
                        switch (info->vendor) {
                        case CFI_CMDSET_INTEL_STANDARD:
                        case CFI_CMDSET_INTEL_EXTENDED:
+                               flash_unlock_seq_intelk3 (info, sect);
                                flash_write_cmd (info, sect, 0, FLASH_CMD_CLEAR_STATUS);
                                flash_write_cmd (info, sect, 0, FLASH_CMD_BLOCK_ERASE);
                                flash_write_cmd (info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
@@ -858,6 +862,12 @@
        flash_write_cmd (info, sect, AMD_ADDR_ACK, AMD_CMD_UNLOCK_ACK);
 }

+static void flash_unlock_seq_intelk3 (flash_info_t * info, flash_sect_t sect)
+{
+       flash_write_cmd (info, sect, 0, INTEL_CMD_UNLOCK_START);
+       flash_write_cmd (info, sect, 0, INTEL_CMD_UNLOCK_ACK);
+}
+
 /*-----------------------------------------------------------------------
  */
 static int flash_isequal (flash_info_t * info, flash_sect_t sect, uint offset, uchar cmd)

May be there must be added an "if" to filter intel k3 devices only, can
somebody confirm this?

Regards, Konsti


-- 
GPG KeyID EF62FCEF
Fingerprint: 13C9 B16B 9844 EC15 CC2E  A080 1E69 3FDA EF62 FCEF

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-10-08 23:18 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-12 14:28 [U-Boot-Users] cfi_flash.c bug regarding intel k3 devices Konstantin Kletschke
2005-05-12 14:45 ` Konstantin Kletschke
2005-10-08 23:18   ` Wolfgang Denk
2005-05-12 16:15 ` Tolunay Orkun
2005-05-12 19:56   ` Konstantin Kletschke
2005-05-12 22:13     ` Tolunay Orkun
2005-05-12 22:24       ` Konstantin Kletschke

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.