[PATCH 4/5] ppc: DA923RC: add board support

Sascha Hauer s.hauer at pengutronix.de
Thu Oct 31 03:48:33 EDT 2013


On Wed, Oct 30, 2013 at 12:34:52PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > +
> > +static int checkboard(void)
> > +{
> > +	void __iomem *lbc = LBC_BASE_ADDR;
> > +	void __iomem *ecm = IOMEM(MPC85xx_ECM_ADDR);
> > +	void __iomem *i2c = IOMEM(I2C1_BASE_ADDR);
> > +	int ret, board_type;
> > +	uint8_t id, rev;
> > +
> > +	/* Clear LBC error interrupts */
> > +	out_be32(lbc + FSL_LBC_LTESR_OFFSET, 0xffffffff);
> > +	/* Enable LBC error interrupts */
> > +	out_be32(lbc + FSL_LBC_LTEIR_OFFSET, 0xffffffff);
> > +	/* Clear ecm errors */
> > +	out_be32(ecm + MPC85xx_ECM_EEDR_OFFSET, 0xffffffff);
> > +	/* Enable ecm errors */
> > +	out_be32(ecm + MPC85xx_ECM_EEER_OFFSET, 0xffffffff);
> > +
> > +	fsl_i2c_init(0, 400000, 0x7f);
> > +	/* Read board id from offset 0. */
> > +	ret = fsl_i2c_read(i2c, 0x3b, 0, 1, &id, sizeof(uint8_t));
> > +	fsl_i2c_stop(i2c);
> > +
> > +	if (ret == -1) {
> > +		/* Enable I2C bus on GBX460. */
> > +		out_be16(IOMEM(0xfc010020), 0);
> > +		ret = fsl_i2c_read(i2c, 0x3b, 0, 1, &id, sizeof(uint8_t));
> > +		fsl_i2c_stop(i2c);
> why you do not simly use the standdard i2c AP?

I think because the machine is still running from SRAM or flash here and
I2C is needed to read out the SPD EEPROM for setting up SDRAM.

> > +
> > +core_initcall(da923rc_board_init_r);

I just wonder that this function is called from initcall context. I
would assume the initcalls start running from SDRAM. I wonder how this
works.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list