RE: [PATCH v2 3/6] TI816X: Update common OMAP machine specific sources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tony Lindgren wrote on Tuesday, November 30, 2010 12:59 AM:

> * Pedanekar, Hemant <hemantp@xxxxxx> [101129 09:07]:
>> Tony Lindgren wrote on Saturday, November 06, 2010 2:30 AM:
>> 
>> Though based on Cortex A8, TI816X series has differences in PRCM, PLL,
>> clock structure compared to OMAP3. 
>> 
>> Many of the OMAP3 specific checks are not applicable for TI816X. For
>> example, consider following: File - arch/arm/mach-omap2/omap_hwmod.c
>> Function - _wait_target_ready()
>> 
>> 	if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
>> 		ret =
> omap2_cm_wait_module_ready(oh->prcm.omap2.module_offs,
>> 				oh->prcm.omap2.idlest_reg_id,
>> 				oh->prcm.omap2.idlest_idle_bit);
>> 
>> The above code inside cpu_is_omap34xx() check is not applicable for TI816X
>> as there are no CM_IDELST registers.
> 
> OK, so places like these will need different handling, and should
> then be based on some idlest flag that gets set during the init
> based on cpu_is_omap24xx() || cpu_is_omap3430() || cpu_is_omap3630().
>
Tony,

Thanks for clarifications. I have some concerns though:
1) I will eventually end up preceeding existing OMAP3 ckecks to have
cpu_is_34xx() fail. Fo example, in above case, since cpu_is_omap34xx will
be true for ti81xx (which we don't want), I need to update the code as:

	if (cpu_is_omap24xx() || (cpu_is_omap34xx() && !cpu_is_ti816x()) {
OR
	if (cpu_is_omap24xx() || (cpu_is_omap34xx() && omap_has_idlest()) {

Then proceed to have a TI816X specific handling in "else if" part with
cpu_is_ti816x() check.
 
2) Various module base addresses part of global data are different compared to
OMAP3/4 - e.g., .tap, .ctrl, .prm etc are different. This means I will still
need separate global data in arch/arm/mach-omap2/common.c as present for
OMAP3/4 and have it set up in omap2_set_globals_ti816x().

3) Differences in PRCM, PLL mean we need a separate clock data files such as
clock816x_data.c, clockdomains816x.h, powerdomains816x.h etc. In fact, future
SoCs in 816x (or rather, 81xx) series will share the same organization and we
will be adding to these files instead of growing omap3xxx_data.c etc. Of course,
I see some special handling done depending upon cpu_is_ and features in
omap3xxx_clk_init() - but will similar approach scale with TI816X which has
completely different clock data?

Similarly, we will also need to add TI816X specific hwmods.

4) TI816X series shares similarity with OMAP4 too - e.g., various IPs are same,
CM module is closer to OMAP4 than OMAP3. Thus, regaring (1) above, I could use
OMAP4 code instead of adding new "else if". Of course, again, there are above
mentioned differences too.

With all this, won't it be better if we add TI816X (or TI81XX) series to exist
on similar lines with OMAP3/4?

Please let me know your thoughts on the above. I can send v3 patch set
incorporating your suggestion of plugging TI816X into OMAP3.    

Also, the patch set submitted doesn't have complete set of files yet
(particularly PRCM/clock code), please have a look at code hosted on Arago.
Below is the link to mach-omap2 folder (2.6.34 at the moment)
http://arago-project.org/git/people/?p=sriram/ti-psp-omap.git;a=tree;f=arch/arm/mach-omap2;h=7f2c48b8cb3213b3850d0b6ea242c0c53fa5d6fa;hb=refs/heads/ti816x-master

Thanks
-
Hemant

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux