On Friday 02 August 2013 07:06 PM, Afzal Mohammed wrote:
> AM335x & AM43x have most of the interconnects, IPs similar. Instead of
> adding new hwmod data for AM43x, reuse AM335x hwmod data as much as
> possible.
>
> In the hwmod entries that could be reused on AM43x, major changes are
> in register offsets and different ocpif clock for most of peripherals
> that comes under l4_wkup interconnect.
>
> To achieve reuse, as a first step, bring out ocpif's relevant for both
> SoC's to a new array and handle appropriately.
>
> Signed-off-by: Afzal Mohammed
> ---
> arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 22 ++
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> index 7a9b492..b0a38f0 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> @@ -29,6 +29,7 @@
> #include "i2c.h"
> #include "mmc.h"
> #include "wd_timer.h"
> +#include "soc.h"
>
> /*
> * IP blocks
> @@ -2458,6 +2459,13 @@ static struct omap_hwmod_ocp_if am33xx_l3_main__aes0 =
> {
>
> static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
> &am33xx_l3_main__emif,
> + &am33xx_l4_hs__pruss,
> + &am33xx_l3_main__lcdc,
> + &am33xx_l3_s__usbss,
> + NULL,
> +};
> +
> +static struct omap_hwmod_ocp_if *amx3xx_hwmod_ocp_ifs[] __initdata = {
It took me sometime to figure out what amx3xx was :)
Did you take a look at how omap2420 and omap2430 reuse is done? you can still
have just one am33xx specific and another am43xx specific ocp_if arrays.
> &am33xx_mpu__l3_main,
> &am33xx_mpu__prcm,
> &am33xx_l3_s__l4_ls,
> @@ -2481,7 +2489,6 @@ static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[]
> __initdata = {
> &am33xx_l4_wkup__gpio0,
> &am33xx_l4_wkup__adc_tsc,
> &am33xx_l4_wkup__wd_timer1,
> - &am33xx_l4_hs__pruss,
> &am33xx_l4_per__dcan0,
> &am33xx_l4_per__dcan1,
> &am33xx_l4_per__gpio1,
> @@ -2522,14 +2529,12 @@ static struct omap_hwmod_ocp_if
> *am33xx_hwmod_ocp_ifs[] __initdata = {
> &am33xx_epwmss2__eqep2,
> &am33xx_epwmss2__ehrpwm2,
> &am33xx_l3_s__gpmc,
> - &am33xx_l3_main__lcdc,
> &am33xx_l4_ls__mcspi0,
> &am33xx_l4_ls__mcspi1,
> &am33xx_l3_main__tptc0,
> &am33xx_l3_main__tptc1,
> &am33xx_l3_main__tptc2,
> &am33xx_l3_main__ocmc,
> - &am33xx_l3_s__usbss,
> &am33xx_l4_hs__cpgmac0,
> &am33xx_cpgmac0__mdio,
> &am33xx_l3_main__sha0,
> @@ -2539,6 +2544,15 @@ static struct omap_hwmod_ocp_if
> *am33xx_hwmod_ocp_ifs[] __initdata = {
>
> int __init am33xx_hwmod_init(void)
> {
> + int ret;
> +
> omap_hwmod_init();
> - return omap_hwmod_register_links(am33xx_hwmod_ocp_ifs);
> + ret = omap_hwmod_register_links(amx3xx_hwmod_ocp_ifs);
> + if (ret < 0)
> + return ret;
> +
> + if (soc_is_am33xx())
> + return omap_hwmod_register_links(am33xx_hwmod_ocp_ifs);
> +
> + return 0;
> }
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html