aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap/include/plat/omap_hwmod.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-omap/include/plat/omap_hwmod.h')
-rw-r--r--arch/arm/plat-omap/include/plat/omap_hwmod.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 65285317f80b..09679032603c 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -219,6 +219,10 @@ struct omap_hwmod_addr_space {
219#define OCPIF_SWSUP_IDLE (1 << 0) 219#define OCPIF_SWSUP_IDLE (1 << 0)
220#define OCPIF_CAN_BURST (1 << 1) 220#define OCPIF_CAN_BURST (1 << 1)
221 221
222/* omap_hwmod_ocp_if._int_flags possibilities */
223#define _OCPIF_INT_FLAGS_REGISTERED (1 << 0)
224
225
222/** 226/**
223 * struct omap_hwmod_ocp_if - OCP interface data 227 * struct omap_hwmod_ocp_if - OCP interface data
224 * @master: struct omap_hwmod that initiates OCP transactions on this link 228 * @master: struct omap_hwmod that initiates OCP transactions on this link
@@ -230,6 +234,7 @@ struct omap_hwmod_addr_space {
230 * @width: OCP data width 234 * @width: OCP data width
231 * @user: initiators using this interface (see OCP_USER_* macros above) 235 * @user: initiators using this interface (see OCP_USER_* macros above)
232 * @flags: OCP interface flags (see OCPIF_* macros above) 236 * @flags: OCP interface flags (see OCPIF_* macros above)
237 * @_int_flags: internal flags (see _OCPIF_INT_FLAGS* macros above)
233 * 238 *
234 * It may also be useful to add a tag_cnt field for OCP2.x devices. 239 * It may also be useful to add a tag_cnt field for OCP2.x devices.
235 * 240 *
@@ -248,6 +253,7 @@ struct omap_hwmod_ocp_if {
248 u8 width; 253 u8 width;
249 u8 user; 254 u8 user;
250 u8 flags; 255 u8 flags;
256 u8 _int_flags;
251}; 257};
252 258
253 259
@@ -477,6 +483,16 @@ struct omap_hwmod_class {
477}; 483};
478 484
479/** 485/**
486 * struct omap_hwmod_link - internal structure linking hwmods with ocp_ifs
487 * @ocp_if: OCP interface structure record pointer
488 * @node: list_head pointing to next struct omap_hwmod_link in a list
489 */
490struct omap_hwmod_link {
491 struct omap_hwmod_ocp_if *ocp_if;
492 struct list_head node;
493};
494
495/**
480 * struct omap_hwmod - integration data for OMAP hardware "modules" (IP blocks) 496 * struct omap_hwmod - integration data for OMAP hardware "modules" (IP blocks)
481 * @name: name of the hwmod 497 * @name: name of the hwmod
482 * @class: struct omap_hwmod_class * to the class of this hwmod 498 * @class: struct omap_hwmod_class * to the class of this hwmod
@@ -494,6 +510,7 @@ struct omap_hwmod_class {
494 * @_sysc_cache: internal-use hwmod flags 510 * @_sysc_cache: internal-use hwmod flags
495 * @_mpu_rt_va: cached register target start address (internal use) 511 * @_mpu_rt_va: cached register target start address (internal use)
496 * @_mpu_port_index: cached MPU register target slave ID (internal use) 512 * @_mpu_port_index: cached MPU register target slave ID (internal use)
513 * @_mpu_port: cached MPU register target slave (internal use)
497 * @opt_clks_cnt: number of @opt_clks 514 * @opt_clks_cnt: number of @opt_clks
498 * @master_cnt: number of @master entries 515 * @master_cnt: number of @master entries
499 * @slaves_cnt: number of @slave entries 516 * @slaves_cnt: number of @slave entries
@@ -512,6 +529,8 @@ struct omap_hwmod_class {
512 * 529 *
513 * Parameter names beginning with an underscore are managed internally by 530 * Parameter names beginning with an underscore are managed internally by
514 * the omap_hwmod code and should not be set during initialization. 531 * the omap_hwmod code and should not be set during initialization.
532 *
533 * @masters and @slaves are now deprecated.
515 */ 534 */
516struct omap_hwmod { 535struct omap_hwmod {
517 const char *name; 536 const char *name;
@@ -532,11 +551,14 @@ struct omap_hwmod {
532 struct clockdomain *clkdm; 551 struct clockdomain *clkdm;
533 struct omap_hwmod_ocp_if **masters; /* connect to *_IA */ 552 struct omap_hwmod_ocp_if **masters; /* connect to *_IA */
534 struct omap_hwmod_ocp_if **slaves; /* connect to *_TA */ 553 struct omap_hwmod_ocp_if **slaves; /* connect to *_TA */
554 struct list_head master_ports; /* connect to *_IA */
555 struct list_head slave_ports; /* connect to *_TA */
535 void *dev_attr; 556 void *dev_attr;
536 u32 _sysc_cache; 557 u32 _sysc_cache;
537 void __iomem *_mpu_rt_va; 558 void __iomem *_mpu_rt_va;
538 spinlock_t _lock; 559 spinlock_t _lock;
539 struct list_head node; 560 struct list_head node;
561 struct omap_hwmod_ocp_if *_mpu_port;
540 u16 flags; 562 u16 flags;
541 u8 _mpu_port_index; 563 u8 _mpu_port_index;
542 u8 response_lat; 564 u8 response_lat;
@@ -622,4 +644,6 @@ extern int omap2430_hwmod_init(void);
622extern int omap3xxx_hwmod_init(void); 644extern int omap3xxx_hwmod_init(void);
623extern int omap44xx_hwmod_init(void); 645extern int omap44xx_hwmod_init(void);
624 646
647extern int __init omap_hwmod_register_links(struct omap_hwmod_ocp_if **ois);
648
625#endif 649#endif