summaryrefslogtreecommitdiff
path: root/board/freescale/p1022ds/p1022ds.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/freescale/p1022ds/p1022ds.c')
-rw-r--r--board/freescale/p1022ds/p1022ds.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/board/freescale/p1022ds/p1022ds.c b/board/freescale/p1022ds/p1022ds.c
index 1cc04f4ca5..39c441009e 100644
--- a/board/freescale/p1022ds/p1022ds.c
+++ b/board/freescale/p1022ds/p1022ds.c
@@ -183,6 +183,8 @@ phys_size_t fixed_sdram(void)
int misc_init_r(void)
{
u8 tmp_val;
+ fsl_sata_reg_t *sata1_reg = (fsl_sata_reg_t *)CONFIG_SYS_MPC85xx_SATA1_ADDR;
+ fsl_sata_reg_t *sata2_reg = (fsl_sata_reg_t *)CONFIG_SYS_MPC85xx_SATA2_ADDR;
/* Enable the TFP410 Encoder (I2C address 0x38)
*/
@@ -207,6 +209,16 @@ int misc_init_r(void)
/* p1022ds_diu_init(); */
/* #endif */
+ /* Changing the SATA controller to operate in enterprise mode
+ * By default, on Rev 1, it comes up in "legacy" mode.
+ */
+#ifdef CONFIG_P1022_LEGACY_ERRATUM_WORKAROUND
+ out_le32(&sata1_reg->hstatus, 0x20000000);
+ out_le32(&sata1_reg->hcontrol, 0x00000100);
+ out_le32(&sata2_reg->hstatus, 0x20000000);
+ out_le32(&sata2_reg->hcontrol, 0x00000100);
+#endif
+
return 0;
}