|  | @@ -8,7 +8,11 @@
 | 
	
		
			
				|  |  |  // Sharing JTAG pins (via JTAGEN)
 | 
	
		
			
				|  |  |  `undef SHARED_JTAG
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -module max80 (
 | 
	
		
			
				|  |  | +module max80
 | 
	
		
			
				|  |  | +#(
 | 
	
		
			
				|  |  | +  // Pull-up installed on RTC 32 kHz line
 | 
	
		
			
				|  |  | +  parameter rtc_32khz_rework = 1'b0
 | 
	
		
			
				|  |  | +) (
 | 
	
		
			
				|  |  |  	      // Clock oscillator
 | 
	
		
			
				|  |  |  	      input	    clock_48, // 48 MHz
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -768,13 +772,14 @@ module max80 (
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |     // System local clock (not an RTC, but settable from one)
 | 
	
		
			
				|  |  |     // Also provides a periodic interrupt (set to 32 Hz)
 | 
	
		
			
				|  |  | +   //
 | 
	
		
			
				|  |  |     // XXX: the RTC 32 kHz signal is missing a pull-up,
 | 
	
		
			
				|  |  | -   // so it will require board rework. For now, use an
 | 
	
		
			
				|  |  | +   // so unless the board has been reworked, use a
 | 
	
		
			
				|  |  |     // divider down from the 84 MHz system clock. The
 | 
	
		
			
				|  |  |     // error is about 200 ppm; a proper NCO could do better.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -   reg [10:0]  ctr_64khz;
 | 
	
		
			
				|  |  | -   reg	       ctr_32khz;
 | 
	
		
			
				|  |  | +   reg		ctr_32khz;
 | 
	
		
			
				|  |  | +   reg [10:0]	ctr_64khz;
 | 
	
		
			
				|  |  |     always @(posedge sys_clk)
 | 
	
		
			
				|  |  |       begin
 | 
	
		
			
				|  |  |  	if (~|ctr_64khz)
 | 
	
	
		
			
				|  | @@ -786,11 +791,14 @@ module max80 (
 | 
	
		
			
				|  |  |  	  ctr_64khz <= ctr_64khz - 1'b1;
 | 
	
		
			
				|  |  |       end
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +   // 32kHz clock synchronized with sys_clk
 | 
	
		
			
				|  |  | +   wire clk_32kHz = rtc_32khz_rework ? rtc_32khz : ctr_32khz;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |     sysclock #(.PERIODIC_HZ_LG2 ( 5 ))
 | 
	
		
			
				|  |  |     sysclock (
 | 
	
		
			
				|  |  |  		      .rst_n ( rst_n ),
 | 
	
		
			
				|  |  |  		      .sys_clk ( sys_clk ),
 | 
	
		
			
				|  |  | -		      .rtc_clk ( ctr_32khz ),
 | 
	
		
			
				|  |  | +		      .rtc_clk ( clk_32kHz ),
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		      .wdata   ( cpu_mem_wdata ),
 | 
	
		
			
				|  |  |  		      .rdata   ( iodev_rdata_sysclock ),
 | 
	
	
		
			
				|  | @@ -836,7 +844,7 @@ module max80 (
 | 
	
		
			
				|  |  |  `else // !`ifdef REALLY_ESP32
 | 
	
		
			
				|  |  |     reg [5:-13] esp_ctr;		// 32768 * 2^-13 = 4 Hz
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -   always @(posedge ctr_32khz)
 | 
	
		
			
				|  |  | +   always @(posedge clk_32kHz)
 | 
	
		
			
				|  |  |       esp_ctr <= esp_ctr + 1'b1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |     assign spi_clk        = esp_ctr[0];
 |