コード例 #1
0
ファイル: at91sam9260ek.c プロジェクト: rucoder/at91bootstrap
void hw_init(void)
{
	/* Disable watchdog */
	writel(AT91C_WDTC_WDDIS, AT91C_BASE_WDT + WDTC_MR);

	/*
	 * At this stage the main oscillator is supposed to be enabled
	 * PCK = MCK = MOSC
	 */
	/* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */
	pmc_cfg_plla(PLLA_SETTINGS, PLL_LOCK_TIMEOUT);

	/* PCK = PLLA = 2 * MCK */
	pmc_cfg_mck(MCKR_SETTINGS, PLL_LOCK_TIMEOUT);

	/* Switch MCK on PLLA output */
	pmc_cfg_mck(MCKR_CSS_SETTINGS, PLL_LOCK_TIMEOUT);

	/* Configure PLLB */
	/* pmc_cfg_pllb(PLLB_SETTINGS, PLL_LOCK_TIMEOUT); */

	/* Enable External Reset */
	writel(((0xA5 << 24) | AT91C_RSTC_URSTEN), AT91C_BASE_RSTC + RSTC_RMR);

	/* Initialize matrix */
	writel((readl(AT91C_BASE_MATRIX + MATRIX_SCFG3) & (~AT91C_MATRIX_SLOT_CYCLE))
			| AT91C_MATRIX_SLOT_CYCLE_(0x40),
			AT91C_BASE_MATRIX + MATRIX_SCFG3);

#ifdef CONFIG_DEBUG
	/* Initialize dbgu */
	initialize_dbgu();
#endif

#ifdef CONFIG_SDRAM
	/* Initlialize sdram controller */
	sdramc_init();
#endif

#ifdef CONFIG_USER_HW_INIT
	hw_init_hook();
#endif

#if defined(CONFIG_NANDFLASH_RECOVERY) || defined(CONFIG_DATAFLASH_RECOVERY)
	/* Init the recovery buttons pins */
	recovery_buttons_hw_init();
#endif
}
コード例 #2
0
static void at91_matrix_hw_init(void)
{
	unsigned int reg;

	reg = matrix_readl(MATRIX_SCFG0);
	reg |= AT91C_MATRIX_ARBT_FIXED_PRIORITY;
	reg |= AT91C_MATRIX_FIXED_DEFMSTR_ARM926D;
	matrix_writel(reg, MATRIX_SCFG0);	/* ROM */


	reg = matrix_readl(MATRIX_SCFG4);
	reg |= AT91C_MATRIX_ARBT_FIXED_PRIORITY;
	reg |= AT91C_MATRIX_FIXED_DEFMSTR_ARM926D;
	reg |= AT91C_MATRIX_SLOT_CYCLE_(0x40);
	matrix_writel(reg, MATRIX_SCFG4);	/* EBI0 */

}
コード例 #3
0
ファイル: at91sam9g10ek.c プロジェクト: rucoder/at91bootstrap
static void at91_matrix_hw_init(void)
{
	unsigned int reg;

	reg = matrix_readl(MATRIX_SCFG3);
	reg &= ~AT91C_MATRIX_SLOT_CYCLE;
	reg |= AT91C_MATRIX_SLOT_CYCLE_(0x40);
	matrix_writel(reg, MATRIX_SCFG3);

	reg = matrix_readl(MATRIX_SCFG0);
	reg |= AT91C_MATRIX_DEFMSTR_TYPE_FIXED_DEFMSTR;
	reg |= AT91C_MATRIX_FIXED_DEFMSTR_ARM926D;
	matrix_writel(reg, MATRIX_SCFG0);

	reg = matrix_readl(MATRIX_SCFG3);
	reg |= AT91C_MATRIX_DEFMSTR_TYPE_FIXED_DEFMSTR;
	reg |= AT91C_MATRIX_FIXED_DEFMSTR_ARM926D;
	matrix_writel(reg, MATRIX_SCFG3);
}
コード例 #4
0
static void at91_matrix_hw_init(void)
{
	/* Bus Matrix Master Configuration Register */
	matrix_writel(AT91C_MATRIX_ULBT_16_BEAT, MATRIX_MCFG0);		/* OHCI */
	matrix_writel(AT91C_MATRIX_ULBT_8_BEAT, MATRIX_MCFG1);		/* ISI */
	matrix_writel(AT91C_MATRIX_ULBT_8_BEAT, MATRIX_MCFG2);		/* 2D */
	matrix_writel(AT91C_MATRIX_ULBT_8_BEAT, MATRIX_MCFG3);		/* DMAC */
	matrix_writel(AT91C_MATRIX_ULBT_4_BEAT, MATRIX_MCFG4);		/* MACB */
	matrix_writel(AT91C_MATRIX_ULBT_16_BEAT, MATRIX_MCFG5);		/* LCDC */
	matrix_writel(AT91C_MATRIX_ULBT_SINGLE_ACCESS, MATRIX_MCFG6);	/* PDC */
	matrix_writel(AT91C_MATRIX_ULBT_8_BEAT, MATRIX_MCFG7);		/* DBUS */
	matrix_writel(AT91C_MATRIX_ULBT_4_BEAT, MATRIX_MCFG8);		/* IBUS */

	/* Bus Matrix Slave Configuration Registers */
	matrix_writel((AT91C_MATRIX_ARBT_FIXED_PRIORITY
			| AT91C_MATRIX_FIXED_DEFMSTR_ARM926I
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(32)),
			MATRIX_SCFG0);		/* ROM */

	matrix_writel((AT91C_MATRIX_ARBT_FIXED_PRIORITY
			| AT91C_MATRIX_FIXED_DEFMSTR_EMAC
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(32)),
			MATRIX_SCFG1);		/* RAM80K */

	matrix_writel((AT91C_MATRIX_ARBT_FIXED_PRIORITY
			| AT91C_MATRIX_FIXED_DEFMSTR_USB
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(16)),
			MATRIX_SCFG2);		/* RAM16K */

	matrix_writel((AT91C_MATRIX_ARBT_FIXED_PRIORITY
			| AT91C_MATRIX_FIXED_DEFMSTR_PDC
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(4)),
			MATRIX_SCFG3);		/* PERIPHERALS */

	matrix_writel((AT91C_MATRIX_ARBT_ROUND_ROBIN
			| AT91C_MATRIX_FIXED_DEFMSTR_ARM926I
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(32)),
			MATRIX_SCFG4);		/* EBI0 */

	matrix_writel((AT91C_MATRIX_ARBT_FIXED_PRIORITY
			| AT91C_MATRIX_FIXED_DEFMSTR_LCDC
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(64)),
			MATRIX_SCFG5);		/* EBI1 */

	matrix_writel((AT91C_MATRIX_ARBT_FIXED_PRIORITY
			| AT91C_MATRIX_FIXED_DEFMSTR_ARM926D
			| AT91C_MATRIX_DEFMSTR_TYPE_LAST_DEFMSTR
			| AT91C_MATRIX_SLOT_CYCLE_(4)),
			MATRIX_SCFG6);		/* APB */

	/* ROM */
	matrix_writel((AT91C_MATRIX_M0PR_(1)
			| AT91C_MATRIX_M1PR_(0)
			| AT91C_MATRIX_M2PR_(2)
			| AT91C_MATRIX_M3PR_(1)
			| AT91C_MATRIX_M4PR_(0)
			| AT91C_MATRIX_M5PR_(3)
			| AT91C_MATRIX_M6PR_(2)
			| AT91C_MATRIX_M7PR_(3)),
			MATRIX_PRAS0);

	matrix_writel(AT91C_MATRIX_M8PR_(0),
			MATRIX_PRBS0);

	/* RAM80K */
	matrix_writel((AT91C_MATRIX_M0PR_(1)
			| AT91C_MATRIX_M1PR_(2)
			| AT91C_MATRIX_M2PR_(1)
			| AT91C_MATRIX_M3PR_(3)
			| AT91C_MATRIX_M4PR_(0)
			| AT91C_MATRIX_M5PR_(0)
			| AT91C_MATRIX_M6PR_(3)
			| AT91C_MATRIX_M7PR_(0)),
			MATRIX_PRAS1);

	matrix_writel(AT91C_MATRIX_M8PR_(2),
			MATRIX_PRBS1);

	/* RAM16K */
	matrix_writel((AT91C_MATRIX_M0PR_(1)
			| AT91C_MATRIX_M1PR_(0)
			| AT91C_MATRIX_M2PR_(2)
			| AT91C_MATRIX_M3PR_(1)
			| AT91C_MATRIX_M4PR_(0)
			| AT91C_MATRIX_M5PR_(3)
			| AT91C_MATRIX_M6PR_(3)
			| AT91C_MATRIX_M7PR_(2)),
			MATRIX_PRAS2);

	matrix_writel(AT91C_MATRIX_M8PR_(0),
			MATRIX_PRBS2);

	/* PERIPHERALS */
	matrix_writel((AT91C_MATRIX_M0PR_(0)
			| AT91C_MATRIX_M1PR_(1)
			| AT91C_MATRIX_M2PR_(0)
			| AT91C_MATRIX_M3PR_(2)
			| AT91C_MATRIX_M4PR_(1)
			| AT91C_MATRIX_M5PR_(0)
			| AT91C_MATRIX_M6PR_(3)
			| AT91C_MATRIX_M7PR_(2)),
			MATRIX_PRAS3);

	matrix_writel(AT91C_MATRIX_M8PR_(3),
			MATRIX_PRBS3);

#if defined(CONFIG_PSRAM)
	/* EBI0 */
	matrix_writel((AT91C_MATRIX_M0PR_(2)
			| AT91C_MATRIX_M1PR_(1)
			| AT91C_MATRIX_M2PR_(1)
			| AT91C_MATRIX_M3PR_(3)
			| AT91C_MATRIX_M4PR_(0)
			| AT91C_MATRIX_M5PR_(3)
			| AT91C_MATRIX_M6PR_(0)
			| AT91C_MATRIX_M7PR_(0)),
			MATRIX_PRAS4);

	matrix_writel(AT91C_MATRIX_M8PR_(2),
			MATRIX_PRBS4);
#else
	/* EBI0 */
	matrix_writel((AT91C_MATRIX_M0PR_(1)
			| AT91C_MATRIX_M1PR_(3)
			| AT91C_MATRIX_M2PR_(0)
			| AT91C_MATRIX_M3PR_(2)
			| AT91C_MATRIX_M4PR_(3)
			| AT91C_MATRIX_M5PR_(0)
			| AT91C_MATRIX_M6PR_(0)
			| AT91C_MATRIX_M7PR_(1)),
			MATRIX_PRAS4);

	matrix_writel(AT91C_MATRIX_M8PR_(2),
			MATRIX_PRBS4);
#endif /* #if defined(CONFIG_PSRAM) */
	/* EBI1 */
	matrix_writel((AT91C_MATRIX_M0PR_(0)
			| AT91C_MATRIX_M1PR_(1)
			| AT91C_MATRIX_M2PR_(0)
			| AT91C_MATRIX_M3PR_(0)
			| AT91C_MATRIX_M4PR_(3)
			| AT91C_MATRIX_M5PR_(2)
			| AT91C_MATRIX_M6PR_(3)
			| AT91C_MATRIX_M7PR_(2)),
			MATRIX_PRAS5);

	matrix_writel(AT91C_MATRIX_M8PR_(1),
			MATRIX_PRBS5);

	/* APB */
	matrix_writel((AT91C_MATRIX_M0PR_(1)
			| AT91C_MATRIX_M1PR_(0)
			| AT91C_MATRIX_M2PR_(2)
			| AT91C_MATRIX_M3PR_(1)
			| AT91C_MATRIX_M4PR_(0)
			| AT91C_MATRIX_M5PR_(0)
			| AT91C_MATRIX_M6PR_(3)
			| AT91C_MATRIX_M7PR_(3)),
			MATRIX_PRAS4);

	matrix_writel(AT91C_MATRIX_M8PR_(2),
			MATRIX_PRBS4);
}