[PATCH 46/61] mpc885ads: Rework initialization.
Scott Wood
scottwood at freescale.com
Thu Jul 19 02:40:07 EST 2007
Vitaly Bordug wrote:
>>-#ifdef CONFIG_SERIAL_CPM_SMC1
>>- clrbits32(bcsr_io, BCSR1_RS232EN_1);
>>- clrbits32(&cp->cp_simode, 0xe0000000 >> 17); /* brg1
>>*/
>>- tmpval8 = in_8(&(cp->cp_smc[0].smc_smcm)) | (SMCM_RX |
>>SMCM_TX);
>>- out_8(&(cp->cp_smc[0].smc_smcm), tmpval8);
>>- clrbits16(&cp->cp_smc[0].smc_smcmr, SMCMR_REN |
>>SMCMR_TEN); /* brg1 */ -#else
>>- setbits32(bcsr_io,BCSR1_RS232EN_1);
>>- out_be16(&cp->cp_smc[0].smc_smcmr, 0);
>>- out_8(&cp->cp_smc[0].smc_smce, 0);
>>-#endif
>
>
> these are not just for beauty: if corresponding not-used uart regs are not cleared, second one has a
> good chances to be hosed.
The CPM reset should take care of that.
>>-void init_scc_ioports(struct fs_platform_info *fpi)
>>-{
>>- int scc_no = fs_get_scc_index(fpi->fs_no);
>>+ /* The SCC3 enet registers overlap the SMC1 registers, so
>>+ * one of the two must be removed from the device tree.
>>+ */
>
> Unfortunately,
> this approach has very little chances to work. IIRC, SCC3 eth and SMC1 do have overlapping pins,
> and just removing it from the tree is not going to save the world because now we have all-in-one early condensed
> pins setup.
It may not save the world, but it's needed to keep the driver from
poking at the disabled device.
> Also, we have to be very careful with corresponding ports shutdown: say turn off smc1 if scc3 is enabled: most prolly
> it was turned on by the firmware/bootwrapper, and eth won't be alive.
The conflict is in register space, not pins -- why would the smc1 pins
matter?
-Scott
More information about the Linuxppc-dev
mailing list