mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	clk: fix assigned-clocks to pass with deferring provider
If a clock provider is not ready for assigning default rates/parents during its probe, it may return -EPROBE_DEFER directly from xlate. Handle this special case properly by skipping the entry and adjusting the return value to pass. The defaults will be handled properly in post probe phase then. Signed-off-by: Tero Kristo <t-kristo@ti.com> Signed-off-by: Tero Kristo <kristo@kernel.org>
This commit is contained in:
		
				
					committed by
					
						 Lokesh Vutla
						Lokesh Vutla
					
				
			
			
				
	
			
			
			
						parent
						
							c319572abd
						
					
				
				
					commit
					1e1fab0be5
				
			| @@ -241,6 +241,15 @@ static int clk_set_default_parents(struct udevice *dev, int stage) | |||||||
|  |  | ||||||
| 		ret = clk_get_by_indexed_prop(dev, "assigned-clocks", | 		ret = clk_get_by_indexed_prop(dev, "assigned-clocks", | ||||||
| 					      index, &clk); | 					      index, &clk); | ||||||
|  | 		/* | ||||||
|  | 		 * If the clock provider is not ready yet, let it handle | ||||||
|  | 		 * the re-programming later. | ||||||
|  | 		 */ | ||||||
|  | 		if (ret == -EPROBE_DEFER) { | ||||||
|  | 			ret = 0; | ||||||
|  | 			continue; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		if (ret) { | 		if (ret) { | ||||||
| 			debug("%s: could not get assigned clock %d for %s\n", | 			debug("%s: could not get assigned clock %d for %s\n", | ||||||
| 			      __func__, index, dev_read_name(dev)); | 			      __func__, index, dev_read_name(dev)); | ||||||
| @@ -309,6 +318,15 @@ static int clk_set_default_rates(struct udevice *dev, int stage) | |||||||
|  |  | ||||||
| 		ret = clk_get_by_indexed_prop(dev, "assigned-clocks", | 		ret = clk_get_by_indexed_prop(dev, "assigned-clocks", | ||||||
| 					      index, &clk); | 					      index, &clk); | ||||||
|  | 		/* | ||||||
|  | 		 * If the clock provider is not ready yet, let it handle | ||||||
|  | 		 * the re-programming later. | ||||||
|  | 		 */ | ||||||
|  | 		if (ret == -EPROBE_DEFER) { | ||||||
|  | 			ret = 0; | ||||||
|  | 			continue; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		if (ret) { | 		if (ret) { | ||||||
| 			dev_dbg(dev, | 			dev_dbg(dev, | ||||||
| 				"could not get assigned clock %d (err = %d)\n", | 				"could not get assigned clock %d (err = %d)\n", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user