diff pirelli/fw-disasm @ 259:ea66ce1a0d2e

pirelli/fw-disasm: pwr_cal_timer_process() analyzed
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 26 Dec 2017 04:47:58 +0000
parents 61d8d70ca7b0
children 863b483bf9e7
line wrap: on
line diff
--- a/pirelli/fw-disasm	Tue Dec 26 04:12:06 2017 +0000
+++ b/pirelli/fw-disasm	Tue Dec 26 04:47:58 2017 +0000
@@ -953,6 +953,160 @@
   2e25c0:	b002		add	sp, #8
   2e25c2:	bd70		pop	{r4, r5, r6, pc}
 
+$pwr_open_test_timer_process:
+  2e2610:	b510		push	{r4, lr}
+  2e2612:	b082		sub	sp, #8
+  2e2614:	48e5		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e2616:	9000		str	r0, [sp, #0]
+  2e2618:	a0e6		add	r0, pc, #920	; 0x398
+  2e261a:	2119		mov	r1, #25	; 0x19
+  2e261c:	2200		mov	r2, #0
+  2e261e:	43d2		mvn	r2, r2
+  2e2620:	2302		mov	r3, #2
+  2e2622:	f0f8 fb07	bl	0x3dac34
+  2e2626:	2001		mov	r0, #1
+  2e2628:	2122		mov	r1, #34	; 0x22
+  2e262a:	f066 fe16	bl	0x34925a
+  2e262e:	1c04		add	r4, r0, #0
+  2e2630:	48de		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e2632:	9000		str	r0, [sp, #0]
+  2e2634:	a06e		add	r0, pc, #440	; 0x1b8
+  2e2636:	211b		mov	r1, #27	; 0x1b
+  2e2638:	1c22		add	r2, r4, #0
+  2e263a:	2305		mov	r3, #5
+  2e263c:	f0f8 fafa	bl	0x3dac34
+  2e2640:	f7ff fe55	bl	0x2e22ee
+  2e2644:	2c00		cmp	r4, #0
+  2e2646:	d11a		bne	0x2e267e
+  2e2648:	48d8		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e264a:	9000		str	r0, [sp, #0]
+  2e264c:	a0e0		add	r0, pc, #896	; 0x380
+  2e264e:	210c		mov	r1, #12	; 0xc
+  2e2650:	2200		mov	r2, #0
+  2e2652:	43d2		mvn	r2, r2
+  2e2654:	2302		mov	r3, #2
+  2e2656:	f0f8 faed	bl	0x3dac34
+  2e265a:	2001		mov	r0, #1
+  2e265c:	f0b2 fc31	bl	0x394ec2
+  2e2660:	2132		mov	r1, #50	; 0x32
+  2e2662:	480f		ldr	r0, =0x1774e38	; via 0x2e26a0
+  2e2664:	6800		ldr	r0, [r0, #0]
+  2e2666:	5c08		ldrb	r0, [r1, r0]
+  2e2668:	2800		cmp	r0, #0
+  2e266a:	d105		bne	0x2e2678
+  2e266c:	2001		mov	r0, #1
+  2e266e:	213c		mov	r1, #60	; 0x3c
+  2e2670:	2201		mov	r2, #1
+  2e2672:	f066 fdcb	bl	0x34920c
+  2e2676:	e011		b	0x2e269c
+  2e2678:	f0d1 fa9b	bl	0x3b3bb2
+  2e267c:	e00e		b	0x2e269c
+  2e267e:	48cb		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e2680:	9000		str	r0, [sp, #0]
+  2e2682:	a062		add	r0, pc, #392	; 0x188
+  2e2684:	210a		mov	r1, #10	; 0xa
+  2e2686:	2200		mov	r2, #0
+  2e2688:	43d2		mvn	r2, r2
+  2e268a:	2305		mov	r3, #5
+  2e268c:	f0f8 fad2	bl	0x3dac34
+  2e2690:	48c7		ldr	r0, =0x1774e70	; via 0x2e29b0
+  2e2692:	6800		ldr	r0, [r0, #0]
+  2e2694:	2101		mov	r1, #1
+  2e2696:	6041		str	r1, [r0, #4]
+  2e2698:	f04b fad2	bl	0x32dc40
+  2e269c:	b002		add	sp, #8
+  2e269e:	bd10		pop	{r4, pc}
+
+$pwr_cal_timer_process:
+  2e26fc:	b510		push	{r4, lr}
+  2e26fe:	b082		sub	sp, #8
+; same check for charger presence and active state as seen before
+  2e2700:	f066 fe04	bl	0x34930c	; $ABB_Read_Status
+  2e2704:	49aa		ldr	r1, =0x1774e70	; via 0x2e29b0
+  2e2706:	6809		ldr	r1, [r1, #0]
+  2e2708:	6849		ldr	r1, [r1, #4]
+  2e270a:	2900		cmp	r1, #0
+  2e270c:	d001		beq	0x2e2712
+  2e270e:	09c0		lsr	r0, r0, #7
+  2e2710:	d205		bcs	0x2e271e
+  2e2712:	2001		mov	r0, #1
+  2e2714:	2138		mov	r1, #56	; 0x38
+  2e2716:	2201		mov	r2, #1
+  2e2718:	f066 fd78	bl	0x34920c
+  2e271c:	e042		b	0x2e27a4
+; checks passed
+; "TIMER0: Battery calibration" trace
+  2e271e:	48a3		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e2720:	9000		str	r0, [sp, #0]
+  2e2722:	a0c7		add	r0, pc, #796	; 0x31c
+  2e2724:	211b		mov	r1, #27	; 0x1b
+  2e2726:	2200		mov	r2, #0
+  2e2728:	43d2		mvn	r2, r2
+  2e272a:	2302		mov	r3, #2
+  2e272c:	f0f8 fa82	bl	0x3dac34
+; write 0 into ADIN2REG
+  2e2730:	2001		mov	r0, #1
+  2e2732:	2128		mov	r1, #40	; 0x28
+  2e2734:	2200		mov	r2, #0
+  2e2736:	f066 fd69	bl	0x34920c
+; delay 2 ticks
+  2e273a:	2002		mov	r0, #2
+  2e273c:	f7cf f8af	bl	0x2b189e
+; back to expected code
+  2e2740:	4c9b		ldr	r4, =0x1774e70	; via 0x2e29b0
+  2e2742:	2001		mov	r0, #1
+  2e2744:	2122		mov	r1, #34	; 0x22
+  2e2746:	f066 fd88	bl	0x34925a
+  2e274a:	6821		ldr	r1, [r4, #0]
+  2e274c:	8108		strh	r0, [r1, #8]
+; i2v offset (raw ADC) also stored in this other var
+  2e274e:	48a4		ldr	r0, =0x1774b82	; via 0x2e29e0
+  2e2750:	6821		ldr	r1, [r4, #0]
+  2e2752:	8909		ldrh	r1, [r1, #8]
+  2e2754:	8001		strh	r1, [r0, #0]
+; back to expected code
+; "i2v offset (MADC code) " trace
+  2e2756:	6820		ldr	r0, [r4, #0]
+  2e2758:	8902		ldrh	r2, [r0, #8]
+  2e275a:	4894		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e275c:	9000		str	r0, [sp, #0]
+  2e275e:	a0bf		add	r0, pc, #764	; 0x2fc
+  2e2760:	2117		mov	r1, #23	; 0x17
+  2e2762:	2305		mov	r3, #5
+  2e2764:	f0f8 fa66	bl	0x3dac34
+  2e2768:	f7ff fdc1	bl	0x2e22ee	; $pwr_stop_charging
+  2e276c:	6820		ldr	r0, [r4, #0]
+  2e276e:	3004		add	r0, #4
+  2e2770:	8881		ldrh	r1, [r0, #4]
+  2e2772:	2900		cmp	r1, #0
+  2e2774:	d109		bne	0x2e278a
+; i2v offset is zero
+; pwr_env_ctrl_blk->charging_state = TESTING_BATTERY;
+  2e2776:	2101		mov	r1, #1
+  2e2778:	6001		str	r1, [r0, #0]
+; setting BCICONF to 0x18
+  2e277a:	2002		mov	r0, #2
+  2e277c:	211a		mov	r1, #26	; 0x1a
+  2e277e:	2218		mov	r2, #24	; 0x18
+  2e2780:	f066 fd44	bl	0x34920c	; $ABB_Write_Register_on_page
+  2e2784:	f7ff fdce	bl	0x2e2324	; $pwr_current_loop_cal
+  2e2788:	e00c		b	0x2e27a4	; return;
+; i2v offset is not zero
+  2e278a:	317a		add	r1, #122	; 0x7a
+  2e278c:	80c1		strh	r1, [r0, #6]
+; "End of charge current (MADC code) " trace
+  2e278e:	6820		ldr	r0, [r4, #0]
+  2e2790:	8942		ldrh	r2, [r0, #10]	; 0xa
+  2e2792:	4886		ldr	r0, =0xa0020	; via 0x2e29ac
+  2e2794:	9000		str	r0, [sp, #0]
+  2e2796:	a0b7		add	r0, pc, #732	; 0x2dc
+  2e2798:	2122		mov	r1, #34	; 0x22
+  2e279a:	2305		mov	r3, #5
+  2e279c:	f0f8 fa4a	bl	0x3dac34
+  2e27a0:	f7ff fe17	bl	0x2e23d2	; $pwr_start_fast_charge
+  2e27a4:	b002		add	sp, #8
+  2e27a6:	bd10		pop	{r4, pc}
+
 $l1_abb_power_on:
   31c036:	b510		push	{r4, lr}
   31c038:	b084		sub	sp, #16	; 0x10
@@ -4784,6 +4938,7 @@
 0x1774b7c:	16-bit var battery voltage in mV
 0x1774b7e:	16-bit var zeroed in pwr_stop_charging()
 0x1774b80:	16-bit var zeroed in pwr_stop_charging()
+0x1774b82:	16-bit var gets i2v offset (raw ADC) written into it
 
 0x1774ccc:	16-bit var initial battery % is stored here