mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-12 06:12:58 +00:00
2b16e51c2f
Add workaround for the following ARM errata: 743622 and 751472. The motivation for this change is the following kernel commit 62e4d357a (ARM: 7609/1: disable errata work-arounds which access secure registers), which removes the errata from multiplatform kernel. Since imx has been converted to multiplatform in the kernel, we need to apply such workarounds into the bootloader. Workaround code has been taken from arch/arm/mm/proc-v7.S from 3.7.1 kernel. Explanation of each erratum is provided at "Chip Errata for the i.MX 6Dual/6Quad" document available at: cache.freescale.com/files/32bit/doc/errata/IMX6DQCE.pdf Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
35 lines
1.2 KiB
ArmAsm
35 lines
1.2 KiB
ArmAsm
/*
|
|
* Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
* MA 02111-1307 USA
|
|
*/
|
|
.section ".text.init", "x"
|
|
|
|
#include <linux/linkage.h>
|
|
|
|
.macro init_arm_errata
|
|
/* ARM erratum ID #743622 */
|
|
mrc p15, 0, r10, c15, c0, 1 /* read diagnostic register */
|
|
orr r10, r10, #1 << 6 /* set bit #6 */
|
|
/* ARM erratum ID #751472 */
|
|
orr r10, r10, #1 << 11 /* set bit #11 */
|
|
mcr p15, 0, r10, c15, c0, 1 /* write diagnostic register */
|
|
.endm
|
|
|
|
ENTRY(lowlevel_init)
|
|
init_arm_errata
|
|
mov pc, lr
|
|
ENDPROC(lowlevel_init)
|