Author: stefanct
Date: Sun Sep 18 00:21:55 2011
New Revision: 1447
URL: http://flashrom.org/trac/flashrom/changeset/1447

Log:
ichspi: unlock PR register restrictions on ICH8+ if not locked down

Tested-by: Shailendra Sodhi
(predecessor/proof of concept patch)
http://www.flashrom.org/pipermail/flashrom/2011-August/007717.html

Signed-off-by: Stefan Tauner <[email protected]>
Acked-by: Carl-Daniel Hailfinger <[email protected]>

Modified:
   trunk/ichspi.c

Modified: trunk/ichspi.c
==============================================================================
--- trunk/ichspi.c      Sat Sep 17 23:21:48 2011        (r1446)
+++ trunk/ichspi.c      Sun Sep 18 00:21:55 2011        (r1447)
@@ -1200,6 +1200,29 @@
                msg_pdbg2(", unused)\n");
 }
 
+/* Set/Clear the read and write protection enable bits of PR register @i
+ * according to @read_prot and @write_prot. */
+static void ich9_set_pr(int i, int read_prot, int write_prot)
+{
+       void *addr = ich_spibar + ICH9_REG_PR0 + (i * 4);
+       uint32_t old = mmio_readl(addr);
+       uint32_t new;
+
+       msg_gspew("PR%u is 0x%08x", i, old);
+       new = old & ~((1 << PR_RP_OFF) | (1 << PR_WP_OFF));
+       if (read_prot)
+               new |= (1 << PR_RP_OFF);
+       if (write_prot)
+               new |= (1 << PR_WP_OFF);
+       if (old == new) {
+               msg_gspew(" already.\n");
+               return;
+       }
+       msg_gspew(", trying to set it to 0x%08x ", new);
+       rmmio_writel(new, addr);
+       msg_gspew("resulted in 0x%08x.\n", mmio_readl(addr));
+}
+
 static const struct spi_programmer spi_programmer_ich7 = {
        .type = SPI_CONTROLLER_ICH7,
        .max_data_read = 64,
@@ -1320,6 +1343,10 @@
                for(i = 0; i < 5; i++)
                        do_ich9_spi_frap(tmp, i);
 
+               /* try to disable PR locks before printing them */
+               if (!ichspi_lock)
+                       for(i = 0; i < 5; i++)
+                               ich9_set_pr(i, 0, 0);
                for(i = 0; i < 5; i++)
                        prettyprint_ich9_reg_pr(i);
 

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to