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

Renaud Barbier renaud.barbier at ge.com
Thu Oct 31 09:15:18 EDT 2013


On 31/10/2013 07:48, Sascha Hauer wrote:
> 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.

At this stage the code has been relocated in memory. The function below
is called early in the initcall table after busses initialization.
I am looking into this.


> 
>>> +
>>> +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
> 
> 




More information about the barebox mailing list