|
@@ -1099,3 +1099,58 @@ static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
|
|
|
|
|
|
#else
|
|
#else
|
|
|
|
|
|
|
|
+static void omap_mux_init_package(struct omap_mux *superset,
|
|
|
|
+ struct omap_mux *package_subset,
|
|
|
|
+ struct omap_ball *package_balls)
|
|
|
|
+{
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
|
|
|
|
+ struct omap_board_mux *board_mux)
|
|
|
|
+{
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+static u32 mux_partitions_cnt;
|
|
|
|
+
|
|
|
|
+int __init omap_mux_init(const char *name, u32 flags,
|
|
|
|
+ u32 mux_pbase, u32 mux_size,
|
|
|
|
+ struct omap_mux *superset,
|
|
|
|
+ struct omap_mux *package_subset,
|
|
|
|
+ struct omap_board_mux *board_mux,
|
|
|
|
+ struct omap_ball *package_balls)
|
|
|
|
+{
|
|
|
|
+ struct omap_mux_partition *partition;
|
|
|
|
+
|
|
|
|
+ partition = kzalloc(sizeof(struct omap_mux_partition), GFP_KERNEL);
|
|
|
|
+ if (!partition)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+
|
|
|
|
+ partition->name = name;
|
|
|
|
+ partition->flags = flags;
|
|
|
|
+ partition->gpio = flags & OMAP_MUX_MODE7;
|
|
|
|
+ partition->size = mux_size;
|
|
|
|
+ partition->phys = mux_pbase;
|
|
|
|
+ partition->base = ioremap(mux_pbase, mux_size);
|
|
|
|
+ if (!partition->base) {
|
|
|
|
+ pr_err("%s: Could not ioremap mux partition at 0x%08x\n",
|
|
|
|
+ __func__, partition->phys);
|
|
|
|
+ kfree(partition);
|
|
|
|
+ return -ENODEV;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ INIT_LIST_HEAD(&partition->muxmodes);
|
|
|
|
+
|
|
|
|
+ list_add_tail(&partition->node, &mux_partitions);
|
|
|
|
+ mux_partitions_cnt++;
|
|
|
|
+ pr_info("%s: Add partition: #%d: %s, flags: %x\n", __func__,
|
|
|
|
+ mux_partitions_cnt, partition->name, partition->flags);
|
|
|
|
+
|
|
|
|
+ omap_mux_init_package(superset, package_subset, package_balls);
|
|
|
|
+ omap_mux_init_list(partition, superset);
|
|
|
|
+ omap_mux_init_signals(partition, board_mux);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|