diff --git a/.gitignore b/.gitignore index 34cfdca..dda1adb 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .vs .vscode build/* +*.bin +prebuilt/* \ No newline at end of file diff --git a/loader/clock.c b/loader/clock.c index 26d9f72..2b6af86 100644 --- a/loader/clock.c +++ b/loader/clock.c @@ -20,19 +20,7 @@ #include "pmc.h" #include "printf.h" #include "util.h" -static clk_rst_t _clock_cl_dvfs = { 0x35C, 0x364, 0, 0x1B, 0, 0 }; - - -//I2C default parameters - TLOW: 4, THIGH: 2, DEBOUNCE: 0, FM_DIV: 26. -static const clk_rst_t _clock_i2c[] = { - { CLK_RST_CONTROLLER_RST_DEVICES_L, CLK_RST_CONTROLLER_CLK_OUT_ENB_L, CLK_RST_CONTROLLER_CLK_SOURCE_I2C1, 12, 0, 19 }, //20.4MHz -> 100KHz - { CLK_RST_CONTROLLER_RST_DEVICES_H, CLK_RST_CONTROLLER_CLK_OUT_ENB_H, CLK_RST_CONTROLLER_CLK_SOURCE_I2C2, 22, 0, 4 }, //81.6MHz -> 400KHz - { 0, 0, 0, 0, 0, 4 }, //81.6MHz -> 400KHz - { 0, 0, 0, 0, 0, 19 }, //20.4MHz -> 100KHz - { CLK_RST_CONTROLLER_RST_DEVICES_H, CLK_RST_CONTROLLER_CLK_OUT_ENB_H, CLK_RST_CONTROLLER_CLK_SOURCE_I2C5, 15, 0, 4 }, //81.6MHz -> 400KHz - { 0, 0, 0, 0, 0, 19 } //20.4MHz -> 100KHz -}; - +#include "types.h" void clock_enable(const clk_rst_t *clk) { @@ -80,36 +68,5 @@ void clock_disable(const clk_rst_t *clk) void config_oscillators() { - CLOCK(CLK_RST_CONTROLLER_SPARE_REG0) = (CLOCK(CLK_RST_CONTROLLER_SPARE_REG0) & 0xFFFFFFF3) | 0; // Clear 3-2bit and set CLK_M_DIVISOR to 1.the 3-2bit is divisor. - SYSCTR0(SYSCTR0_CNTFID0) = 12000000; // Set counter frequency. 12Mhz - //This register is for 1 microsecond. bit7-0->DIVISOR bit15-8->DIVIDEND.So we need 1/12 - TIMER0(TIMERUS_USEC_CFG) = 0x0B; // For 12MHz clk_m. 1/12 -> 0x00/0x0b - - CLOCK(CLK_RST_CONTROLLER_OSC_CTRL) = 0x80000071; // Set OSC to 12MHz and drive strength. - - PMC(APBDEV_PMC_OSC_EDPD_OVER) = (PMC(APBDEV_PMC_OSC_EDPD_OVER) & 0xFFFFFF81) | 0xE; // Set LP0 OSC drive strength. - PMC(APBDEV_PMC_OSC_EDPD_OVER) = (PMC(APBDEV_PMC_OSC_EDPD_OVER) & 0xFFBFFFFF) | PMC_OSC_EDPD_OVER_OSC_CTRL_OVER; - PMC(APBDEV_PMC_CNTRL2) = (PMC(APBDEV_PMC_CNTRL2) & 0xFFFFEFFF) | PMC_CNTRL2_HOLD_CKE_LOW_EN; - - //Not impl in T124?Only in T210 and newer - //PMC(APB_MISC_GP_ASDBGREG) = (PMC(APB_MISC_GP_ASDBGREG) & 0xFCFFFFFF) | (2 << 24); // CFG2TMC_RAM_SVOP_PDP. - - CLOCK(CLK_RST_CONTROLLER_CLK_SYSTEM_RATE) = 0x00; // Set HCLK div to 1 and PCLK div to 1. - //CLOCK(CLK_RST_CONTROLLER_PLLMB_BASE) &= 0xBFFFFFFF; // PLLMB disable. - - PMC(APBDEV_PMC_TSC_MULT) = (PMC(APBDEV_PMC_TSC_MULT) & 0xFFFF0000) | 0x16E0; // 0x249F = 12000000 * (16 / 32.768 kHz). - - CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_SYS) = 0; // Set BPMP/SCLK div to 1. - CLOCK(CLK_RST_CONTROLLER_SCLK_BURST_POLICY) = 0x20004444; // Set BPMP/SCLK source to Run and PLLP_OUT2 (204MHz). - CLOCK(CLK_RST_CONTROLLER_SUPER_SCLK_DIVIDER) = 0x80000000; // Enable SUPER_SDIV to 1. - CLOCK(CLK_RST_CONTROLLER_CLK_SYSTEM_RATE) = 2; // Set HCLK div to 1 and PCLK div to 3. } - -void clock_enable_cl_dvfs(){ - clock_enable(&_clock_cl_dvfs); -} -void clock_enable_i2c(u32 idx) -{ - clock_enable(&_clock_i2c[idx]); -} \ No newline at end of file diff --git a/loader/clock.h b/loader/clock.h index 597061a..eac32a0 100644 --- a/loader/clock.h +++ b/loader/clock.h @@ -27,26 +27,8 @@ typedef struct _clk_rst_t u8 clk_div; } clk_rst_t; -#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC 0x19c -#define CLK_RST_CONTROLLER_CLK_ENB_H_SET 0x328 -#define CLK_RST_CONTROLLER_CLK_ENB_X_SET 0x284 -#define CLK_RST_CONTROLLER_RST_DEV_H_SET 0x308 -#define CLK_RST_CONTROLLER_SPARE_REG0 0x55c -#define CLK_RST_CONTROLLER_OSC_CTRL 0x50 -#define CLK_RST_CONTROLLER_CLK_SYSTEM_RATE 0x30 -#define CLK_RST_CONTROLLER_CLK_SOURCE_SYS 0x400 -#define CLK_RST_CONTROLLER_SCLK_BURST_POLICY 0x28 -#define CLK_RST_CONTROLLER_SUPER_SCLK_DIVIDER 0x2c -//I2C -#define CLK_RST_CONTROLLER_RST_DEVICES_L 0x4 -#define CLK_RST_CONTROLLER_RST_DEVICES_H 0x8 -#define CLK_RST_CONTROLLER_RST_DEVICES_U 0xC +#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_0 0x19c -#define CLK_RST_CONTROLLER_CLK_SOURCE_I2C2 0x198 -#define CLK_RST_CONTROLLER_CLK_OUT_ENB_H 0x14 -#define CLK_RST_CONTROLLER_CLK_SOURCE_I2C1 0x124 -#define CLK_RST_CONTROLLER_CLK_SOURCE_I2C5 0x128 -#define CLK_RST_CONTROLLER_CLK_OUT_ENB_L 0x10 void clock_enable(const clk_rst_t *clk); void clock_disable(const clk_rst_t *clk); void clock_enable_cl_dvfs(); diff --git a/loader/gpio.c b/loader/gpio.c index 0a89a0d..a3d0ac2 100644 --- a/loader/gpio.c +++ b/loader/gpio.c @@ -18,7 +18,5 @@ #include "i2c.h" #include "pinmux.h" void config_gpios(){ - APB_MISC(APB_MISC_PP_PINMUX_GLOBAL) = 0; - pinmux_config_i2c(I2C_1); - pinmux_config_i2c(I2C_5); + } \ No newline at end of file diff --git a/loader/main.c b/loader/main.c index 31a2252..2ca9763 100644 --- a/loader/main.c +++ b/loader/main.c @@ -66,23 +66,18 @@ void config_hw(){ fuse_disable_program(); printf_("[x] fuse program disabled\n"); + // Initialize counters, CLKM, BPMP(also called AVP in T124/T132) and other clocks based on 38.4MHz oscillator. + config_oscillators(); + mc_enable(); printf_("[x] mc setup\n"); - // Initialize counters, CLKM, BPMP(also called AVP in T124/T132) and other clocks based on 38.4MHz oscillator. - config_oscillators(); - printf_("[x] Oscillators setup at 12Mhz\n"); - printf_("\tCLK_M:12Mhz\n"); - printf_("\tCLK_S:32.768khz\n"); - printf_("\tSystem CLK:127.5Mhz\n"); - printf_("\tHCLK: 127.5Mhz\n"); - printf_("\tPCLK: 31.875Mhz\n"); - config_gpios(); printf_("[x] GPIO setup\n"); + - clock_enable_cl_dvfs(); - printf_("[x] DVFS setup\n"); + //clock_enable_cl_dvfs(); + //printf_("[x] DVFS setup\n"); //FIXME I2C Doesn't work!!! printf_("Fixme.I2C doesn't work"); diff --git a/loader/mc.c b/loader/mc.c index 172513f..e4c4962 100644 --- a/loader/mc.c +++ b/loader/mc.c @@ -20,29 +20,7 @@ #include "util.h" #include "mc.h" -void mc_disable_ahb_redirect() -{ - MC(MC_IRAM_BOM) = 0xFFFFF000; - MC(MC_IRAM_TOM) = 0; - //Disable IRAM_CFG_WRITE_ACCESS (sticky). - //MC(MC_IRAM_REG_CTRL) = MC(MC_IRAM_REG_CTRL) & 0xFFFFFFFE | 1; - CLOCK(0x3A4) &= 0xFFF7FFFF; -} void mc_enable() { - CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_EMC) = CLOCK(CLK_RST_CONTROLLER_CLK_SOURCE_EMC) & 0x1FFFFFFF | 0x40000000; - //Enable MIPI CAL clock. - CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) = CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) & 0xFDFFFFFF | 0x2000000; - //Enable MC clock. - CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) = CLOCK(CLK_RST_CONTROLLER_CLK_ENB_H_SET) & 0xFFFFFFFE | 1; - //Enable EMC DLL clock. - CLOCK(CLK_RST_CONTROLLER_CLK_ENB_X_SET) = CLOCK(CLK_RST_CONTROLLER_CLK_ENB_X_SET) & 0xFFFFBFFF | 0x4000; - CLOCK(CLK_RST_CONTROLLER_RST_DEV_H_SET) = 0x2000001; //Clear EMC and MC reset. - //#ifdef CONFIG_ENABLE_AHB_REDIRECT - mc_disable_ahb_redirect(); - - - //mc_enable_ahb_redirect(); - //#endif } \ No newline at end of file diff --git a/loader/mc.h b/loader/mc.h index 5da635c..706f104 100644 --- a/loader/mc.h +++ b/loader/mc.h @@ -14,7 +14,5 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#define MC_IRAM_BOM 0x65c -#define MC_IRAM_TOM 0x660 -#define MC_LATENCY_ALLOWANCE_A9AVP 0x3a4 + void mc_enable(); \ No newline at end of file diff --git a/loader/pinmux.c b/loader/pinmux.c index d6207e0..90e22f7 100644 --- a/loader/pinmux.c +++ b/loader/pinmux.c @@ -16,8 +16,3 @@ */ #include "t124.h" #include "pinmux.h" -void pinmux_config_i2c(u32 idx) -{ - PINMUX_AUX(PINMUX_AUX_X_I2C_SCL(idx)) = 0x40; - PINMUX_AUX(PINMUX_AUX_X_I2C_SDA(idx)) = 0x40; -} diff --git a/loader/pinmux.h b/loader/pinmux.h index a94d92e..e05311e 100644 --- a/loader/pinmux.h +++ b/loader/pinmux.h @@ -16,6 +16,4 @@ */ void pinmux_config_i2c(u32 idx); -/*! 0:GEN1, 1:GEN2, 2:GEN3, 3:CAM, 4:PWR */ -#define PINMUX_AUX_X_I2C_SCL(x) (0xBC + 8 * (x)) -#define PINMUX_AUX_X_I2C_SDA(x) (0xC0 + 8 * (x)) + diff --git a/loader/pmc.h b/loader/pmc.h index 71ad289..9f3efe4 100644 --- a/loader/pmc.h +++ b/loader/pmc.h @@ -15,9 +15,3 @@ * along with this program. If not, see . */ #include "types.h" -#define APBDEV_PMC_OSC_EDPD_OVER 0x1a4 -#define APBDEV_PMC_CNTRL2 0x440 -#define APBDEV_PMC_TSC_MULT 0x2B4 - -#define PMC_OSC_EDPD_OVER_OSC_CTRL_OVER BIT(22) -#define PMC_CNTRL2_HOLD_CKE_LOW_EN BIT(12) \ No newline at end of file diff --git a/loader/power.h b/loader/power.h index 7fff434..7b16e90 100644 --- a/loader/power.h +++ b/loader/power.h @@ -17,7 +17,5 @@ #ifndef _T124_POWER_H_ #define _T124_POWER_H_ -#define TPS65913_I2C_ADDR 0xB0 -#define PMU_EEPROM_I2C_ADDR 0xAA #endif \ No newline at end of file diff --git a/loader/se.h b/loader/se.h index 9a22357..b912ee3 100644 --- a/loader/se.h +++ b/loader/se.h @@ -18,12 +18,4 @@ #ifndef _T124_SE_H_ #define _T124_SE_H_ -#define SE_KEYTABLE_REG_OFFSET 0x31c -#define SE_KEYTABLE_SLOT_SHIFT 7 -#define SE_KEYTABLE_SLOT(x) (x << SE_KEYTABLE_SLOT_SHIFT) -#define SE_KEYTABLE_QUAD_SHIFT 2 -#define SE_KEY_TABLE_ACCESS_REG_OFFSET 0x284 -#define SE_INT_STATUS_REG_OFFSET 0x010 -#define SE_KEYTABLE_DATA0_REG_OFFSET 0x320 - #endif \ No newline at end of file