|  | @@ -1099,3 +1099,58 @@ static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #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;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 |