mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 19:31:12 +00:00
[GFX] Finish ctxt global usage
Plus: - Some whitespace fixes - Allow UHS bus to reach max 102MB/s from 81.6MB/s
This commit is contained in:
parent
5d99f2fcf7
commit
8eb5ee867d
11 changed files with 37 additions and 36 deletions
|
@ -612,7 +612,7 @@ static int _restore_emmc_part(char *sd_path, sdmmc_storage_t *storage, emmc_part
|
||||||
|
|
||||||
gfx_con_getpos(&gfx_con.savedx, &gfx_con.savedy);
|
gfx_con_getpos(&gfx_con.savedx, &gfx_con.savedy);
|
||||||
|
|
||||||
bool use_multipart = false;
|
bool use_multipart = false;
|
||||||
|
|
||||||
if (allow_multi_part)
|
if (allow_multi_part)
|
||||||
{
|
{
|
||||||
|
|
|
@ -248,16 +248,16 @@ void print_mmc_info()
|
||||||
gfx_printf("%keMMC Partitions:%k\n", 0xFF00DDFF, 0xFFCCCCCC);
|
gfx_printf("%keMMC Partitions:%k\n", 0xFF00DDFF, 0xFFCCCCCC);
|
||||||
gfx_printf(" 1: %kBOOT0 %k\n Size: %5d KiB (LBA Sectors: 0x%07X)\n", 0xFF96FF00, 0xFFCCCCCC,
|
gfx_printf(" 1: %kBOOT0 %k\n Size: %5d KiB (LBA Sectors: 0x%07X)\n", 0xFF96FF00, 0xFFCCCCCC,
|
||||||
boot_size / 1024, boot_size / 1024 / 512);
|
boot_size / 1024, boot_size / 1024 / 512);
|
||||||
gfx_put_small_sep(&gfx_con);
|
gfx_put_small_sep();
|
||||||
gfx_printf(" 2: %kBOOT1 %k\n Size: %5d KiB (LBA Sectors: 0x%07X)\n", 0xFF96FF00, 0xFFCCCCCC,
|
gfx_printf(" 2: %kBOOT1 %k\n Size: %5d KiB (LBA Sectors: 0x%07X)\n", 0xFF96FF00, 0xFFCCCCCC,
|
||||||
boot_size / 1024, boot_size / 1024 / 512);
|
boot_size / 1024, boot_size / 1024 / 512);
|
||||||
gfx_put_small_sep(&gfx_con);
|
gfx_put_small_sep();
|
||||||
gfx_printf(" 3: %kRPMB %k\n Size: %5d KiB (LBA Sectors: 0x%07X)\n", 0xFF96FF00, 0xFFCCCCCC,
|
gfx_printf(" 3: %kRPMB %k\n Size: %5d KiB (LBA Sectors: 0x%07X)\n", 0xFF96FF00, 0xFFCCCCCC,
|
||||||
rpmb_size / 1024, rpmb_size / 1024 / 512);
|
rpmb_size / 1024, rpmb_size / 1024 / 512);
|
||||||
gfx_put_small_sep(&gfx_con);
|
gfx_put_small_sep();
|
||||||
gfx_printf(" 0: %kGPP (USER) %k\n Size: %5d MiB (LBA Sectors: 0x%07X)\n\n", 0xFF96FF00, 0xFFCCCCCC,
|
gfx_printf(" 0: %kGPP (USER) %k\n Size: %5d MiB (LBA Sectors: 0x%07X)\n\n", 0xFF96FF00, 0xFFCCCCCC,
|
||||||
storage.sec_cnt >> SECTORS_TO_MIB_COEFF, storage.sec_cnt);
|
storage.sec_cnt >> SECTORS_TO_MIB_COEFF, storage.sec_cnt);
|
||||||
gfx_put_small_sep(&gfx_con);
|
gfx_put_small_sep();
|
||||||
gfx_printf("%kGPP (eMMC USER) partition table:%k\n", 0xFF00DDFF, 0xFFCCCCCC);
|
gfx_printf("%kGPP (eMMC USER) partition table:%k\n", 0xFF00DDFF, 0xFFCCCCCC);
|
||||||
|
|
||||||
sdmmc_storage_set_mmc_partition(&storage, 0);
|
sdmmc_storage_set_mmc_partition(&storage, 0);
|
||||||
|
@ -269,7 +269,7 @@ void print_mmc_info()
|
||||||
gfx_printf(" %02d: %k%s%k\n Size: % 5d MiB (LBA Sectors 0x%07X)\n LBA Range: %08X-%08X\n",
|
gfx_printf(" %02d: %k%s%k\n Size: % 5d MiB (LBA Sectors 0x%07X)\n LBA Range: %08X-%08X\n",
|
||||||
gpp_idx++, 0xFFAEFD14, part->name, 0xFFCCCCCC, (part->lba_end - part->lba_start + 1) >> SECTORS_TO_MIB_COEFF,
|
gpp_idx++, 0xFFAEFD14, part->name, 0xFFCCCCCC, (part->lba_end - part->lba_start + 1) >> SECTORS_TO_MIB_COEFF,
|
||||||
part->lba_end - part->lba_start + 1, part->lba_start, part->lba_end);
|
part->lba_end - part->lba_start + 1, part->lba_start, part->lba_end);
|
||||||
gfx_put_small_sep(&gfx_con);
|
gfx_put_small_sep();
|
||||||
}
|
}
|
||||||
nx_emmc_gpt_free(&gpt);
|
nx_emmc_gpt_free(&gpt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -588,6 +588,7 @@ void fix_sd_nin_attr() { _fix_sd_attr(1); }
|
||||||
#include "../soc/fuse.h"
|
#include "../soc/fuse.h"
|
||||||
#include "../soc/clock.h"
|
#include "../soc/clock.h"
|
||||||
|
|
||||||
|
mtc_config_t mtc_cfg;
|
||||||
void minerva()
|
void minerva()
|
||||||
{
|
{
|
||||||
gfx_clear_partial_grey(0x1B, 0, 1256);
|
gfx_clear_partial_grey(0x1B, 0, 1256);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (C) 2018 CTCaer
|
* Copyright (C) 2018-2019 CTCaer
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms and conditions of the GNU General Public License,
|
* under the terms and conditions of the GNU General Public License,
|
||||||
|
@ -297,7 +297,7 @@ static void _gfx_putn(u32 v, int base, char fill, int fcnt)
|
||||||
gfx_puts(p);
|
gfx_puts(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfx_put_small_sep(gfx_con_t *con)
|
void gfx_put_small_sep()
|
||||||
{
|
{
|
||||||
u8 prevFontSize = gfx_con.fntsz;
|
u8 prevFontSize = gfx_con.fntsz;
|
||||||
gfx_con.fntsz = 8;
|
gfx_con.fntsz = 8;
|
||||||
|
@ -305,7 +305,7 @@ void gfx_put_small_sep(gfx_con_t *con)
|
||||||
gfx_con.fntsz = prevFontSize;
|
gfx_con.fntsz = prevFontSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfx_put_big_sep(gfx_con_t *con)
|
void gfx_put_big_sep()
|
||||||
{
|
{
|
||||||
u8 prevFontSize = gfx_con.fntsz;
|
u8 prevFontSize = gfx_con.fntsz;
|
||||||
gfx_con.fntsz = 16;
|
gfx_con.fntsz = 16;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 naehrwert
|
* Copyright (c) 2018 naehrwert
|
||||||
* Copyright (C) 2018 CTCaer
|
* Copyright (C) 2018-2019 CTCaer
|
||||||
* Copyright (C) 2018 M4xw
|
* Copyright (C) 2018 M4xw
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
@ -41,8 +41,8 @@ void gfx_hexdump(u32 base, const u8 *buf, u32 len);
|
||||||
|
|
||||||
void gfx_set_pixel(u32 x, u32 y, u32 color);
|
void gfx_set_pixel(u32 x, u32 y, u32 color);
|
||||||
void gfx_line(int x0, int y0, int x1, int y1, u32 color);
|
void gfx_line(int x0, int y0, int x1, int y1, u32 color);
|
||||||
void gfx_put_small_sep(gfx_con_t *con);
|
void gfx_put_small_sep();
|
||||||
void gfx_put_big_sep(gfx_con_t *con);
|
void gfx_put_big_sep();
|
||||||
void gfx_set_rect_grey(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
|
void gfx_set_rect_grey(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
|
||||||
void gfx_set_rect_rgb(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
|
void gfx_set_rect_rgb(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
|
||||||
void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
|
void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
|
||||||
|
|
|
@ -87,7 +87,7 @@ static const u8 master_keyseed_4xx_5xx_610[0x10] =
|
||||||
{ 0x2D, 0xC1, 0xF4, 0x8D, 0xF3, 0x5B, 0x69, 0x33, 0x42, 0x10, 0xAC, 0x65, 0xDA, 0x90, 0x46, 0x66 };
|
{ 0x2D, 0xC1, 0xF4, 0x8D, 0xF3, 0x5B, 0x69, 0x33, 0x42, 0x10, 0xAC, 0x65, 0xDA, 0x90, 0x46, 0x66 };
|
||||||
|
|
||||||
static const u8 master_keyseed_620[0x10] =
|
static const u8 master_keyseed_620[0x10] =
|
||||||
{ 0x37, 0x4B, 0x77, 0x29, 0x59, 0xB4, 0x04, 0x30, 0x81, 0xF6, 0xE5, 0x8C, 0x6D, 0x36, 0x17, 0x9A };
|
{ 0x37, 0x4B, 0x77, 0x29, 0x59, 0xB4, 0x04, 0x30, 0x81, 0xF6, 0xE5, 0x8C, 0x6D, 0x36, 0x17, 0x9A };
|
||||||
|
|
||||||
static const u8 console_keyseed_4xx_5xx[0x10] =
|
static const u8 console_keyseed_4xx_5xx[0x10] =
|
||||||
{ 0x0C, 0x91, 0x09, 0xDB, 0x93, 0x93, 0x07, 0x81, 0x07, 0x3C, 0xC4, 0x16, 0x22, 0x7C, 0x6C, 0x28 };
|
{ 0x0C, 0x91, 0x09, 0xDB, 0x93, 0x93, 0x07, 0x81, 0x07, 0x3C, 0xC4, 0x16, 0x22, 0x7C, 0x6C, 0x28 };
|
||||||
|
@ -132,7 +132,7 @@ void _pmc_scratch_lock(u32 kb)
|
||||||
case KB_FIRMWARE_VERSION_100_200:
|
case KB_FIRMWARE_VERSION_100_200:
|
||||||
case KB_FIRMWARE_VERSION_300:
|
case KB_FIRMWARE_VERSION_300:
|
||||||
case KB_FIRMWARE_VERSION_301:
|
case KB_FIRMWARE_VERSION_301:
|
||||||
PMC(APBDEV_PMC_SEC_DISABLE) = 0x7FFFF3;
|
PMC(APBDEV_PMC_SEC_DISABLE) = 0x7FFFF3;
|
||||||
PMC(APBDEV_PMC_SEC_DISABLE2) = 0xFFFFFFFF;
|
PMC(APBDEV_PMC_SEC_DISABLE2) = 0xFFFFFFFF;
|
||||||
PMC(APBDEV_PMC_SEC_DISABLE3) = 0xFFAFFFFF;
|
PMC(APBDEV_PMC_SEC_DISABLE3) = 0xFFAFFFFF;
|
||||||
PMC(APBDEV_PMC_SEC_DISABLE4) = 0xFFFFFFFF;
|
PMC(APBDEV_PMC_SEC_DISABLE4) = 0xFFFFFFFF;
|
||||||
|
@ -657,7 +657,7 @@ int hos_launch(ini_sec_t *cfg)
|
||||||
// Wait for secmon to get ready.
|
// Wait for secmon to get ready.
|
||||||
if (smmu_is_used())
|
if (smmu_is_used())
|
||||||
smmu_exit();
|
smmu_exit();
|
||||||
else
|
else
|
||||||
cluster_boot_cpu0(ctxt.pkg1_id->secmon_base);
|
cluster_boot_cpu0(ctxt.pkg1_id->secmon_base);
|
||||||
while (!secmon_mb->out)
|
while (!secmon_mb->out)
|
||||||
usleep(1); // This only works when in IRAM or with a trained DRAM.
|
usleep(1); // This only works when in IRAM or with a trained DRAM.
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#include "../../gfx/gfx.h"
|
#include "../../gfx/gfx.h"
|
||||||
#define EL_DEBUG(format, ...) \
|
#define EL_DEBUG(format, ...) \
|
||||||
gfx_printf(&gfx_con, format __VA_OPT__(, ) __VA_ARGS__)
|
gfx_printf(format __VA_OPT__(, ) __VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
#define EL_DEBUG(...) \
|
#define EL_DEBUG(...) \
|
||||||
do \
|
do \
|
||||||
|
|
|
@ -467,7 +467,7 @@ void clock_sdmmc_get_params(u32 *pout, u16 *pdivisor, u32 type)
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
case 11:
|
case 11:
|
||||||
*pout = 200000;
|
*pout = 208000;
|
||||||
*pdivisor = 1;
|
*pdivisor = 1;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
|
|
|
@ -62,19 +62,19 @@ u32 fuse_read_odm(u32 idx)
|
||||||
|
|
||||||
void fuse_wait_idle()
|
void fuse_wait_idle()
|
||||||
{
|
{
|
||||||
u32 ctrl;
|
u32 ctrl;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
ctrl = FUSE(FUSE_CTRL);
|
ctrl = FUSE(FUSE_CTRL);
|
||||||
} while (((ctrl >> 16) & 0x1f) != 4);
|
} while (((ctrl >> 16) & 0x1f) != 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 fuse_read(u32 addr)
|
u32 fuse_read(u32 addr)
|
||||||
{
|
{
|
||||||
FUSE(FUSE_ADDR) = addr;
|
FUSE(FUSE_ADDR) = addr;
|
||||||
FUSE(FUSE_CTRL) = (FUSE(FUSE_ADDR) & ~FUSE_CMD_MASK) | FUSE_READ;
|
FUSE(FUSE_CTRL) = (FUSE(FUSE_ADDR) & ~FUSE_CMD_MASK) | FUSE_READ;
|
||||||
fuse_wait_idle();
|
fuse_wait_idle();
|
||||||
return FUSE(FUSE_RDATA);
|
return FUSE(FUSE_RDATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fuse_read_array(u32 *words)
|
void fuse_read_array(u32 *words)
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include "../mem/heap.h"
|
#include "../mem/heap.h"
|
||||||
#include "../utils/util.h"
|
#include "../utils/util.h"
|
||||||
|
|
||||||
//#define DPRINTF(...) gfx_printf(&gfx_con, __VA_ARGS__)
|
//#define DPRINTF(...) gfx_printf(__VA_ARGS__)
|
||||||
#define DPRINTF(...)
|
#define DPRINTF(...)
|
||||||
|
|
||||||
static inline u32 unstuff_bits(u32 *resp, u32 start, u32 size)
|
static inline u32 unstuff_bits(u32 *resp, u32 start, u32 size)
|
||||||
|
@ -425,7 +425,7 @@ static int _mmc_storage_enable_HS400(sdmmc_storage_t *storage)
|
||||||
static int _mmc_storage_enable_highspeed(sdmmc_storage_t *storage, u32 card_type, u32 type)
|
static int _mmc_storage_enable_highspeed(sdmmc_storage_t *storage, u32 card_type, u32 type)
|
||||||
{
|
{
|
||||||
//TODO: this should be a config item.
|
//TODO: this should be a config item.
|
||||||
//---v
|
// --v
|
||||||
if (!1 || sdmmc_get_voltage(storage->sdmmc) != SDMMC_POWER_1_8)
|
if (!1 || sdmmc_get_voltage(storage->sdmmc) != SDMMC_POWER_1_8)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -519,7 +519,7 @@ int sdmmc_storage_init_mmc(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32 id, u32
|
||||||
free(ext_csd);
|
free(ext_csd);
|
||||||
DPRINTF("[MMC] got ext_csd\n");
|
DPRINTF("[MMC] got ext_csd\n");
|
||||||
_mmc_storage_parse_cid(storage); //This needs to be after csd and ext_csd
|
_mmc_storage_parse_cid(storage); //This needs to be after csd and ext_csd
|
||||||
//gfx_hexdump(&gfx_con, 0, ext_csd, 512);
|
//gfx_hexdump(0, ext_csd, 512);
|
||||||
|
|
||||||
/* When auto BKOPS is enabled the mmc device should be powered all the time until we disable this and check status.
|
/* When auto BKOPS is enabled the mmc device should be powered all the time until we disable this and check status.
|
||||||
Disable it for now until BKOPS disable added to power down sequence at sdmmc_storage_end().
|
Disable it for now until BKOPS disable added to power down sequence at sdmmc_storage_end().
|
||||||
|
@ -706,7 +706,7 @@ int _sd_storage_get_scr(sdmmc_storage_t *storage, u8 *buf)
|
||||||
|
|
||||||
u32 tmp = 0;
|
u32 tmp = 0;
|
||||||
sdmmc_get_rsp(storage->sdmmc, &tmp, 4, SDMMC_RSP_TYPE_1);
|
sdmmc_get_rsp(storage->sdmmc, &tmp, 4, SDMMC_RSP_TYPE_1);
|
||||||
//Prepare buffer for unstuff_bits
|
//Prepare buffer for unstuff_bits
|
||||||
for (int i = 0; i < 8; i+=4)
|
for (int i = 0; i < 8; i+=4)
|
||||||
{
|
{
|
||||||
storage->raw_scr[i + 3] = buf[i];
|
storage->raw_scr[i + 3] = buf[i];
|
||||||
|
@ -715,7 +715,7 @@ int _sd_storage_get_scr(sdmmc_storage_t *storage, u8 *buf)
|
||||||
storage->raw_scr[i] = buf[i + 3];
|
storage->raw_scr[i] = buf[i + 3];
|
||||||
}
|
}
|
||||||
_sd_storage_parse_scr(storage);
|
_sd_storage_parse_scr(storage);
|
||||||
//gfx_hexdump(&gfx_con, 0, storage->raw_scr, 8);
|
//gfx_hexdump(0, storage->raw_scr, 8);
|
||||||
|
|
||||||
return _sdmmc_storage_check_result(tmp);
|
return _sdmmc_storage_check_result(tmp);
|
||||||
}
|
}
|
||||||
|
@ -827,7 +827,7 @@ int _sd_storage_enable_highspeed_low_volt(sdmmc_storage_t *storage, u32 type, u8
|
||||||
|
|
||||||
if (!_sd_storage_switch_get(storage, buf))
|
if (!_sd_storage_switch_get(storage, buf))
|
||||||
return 0;
|
return 0;
|
||||||
//gfx_hexdump(&gfx_con, 0, (u8 *)buf, 64);
|
//gfx_hexdump(0, (u8 *)buf, 64);
|
||||||
|
|
||||||
u32 hs_type = 0;
|
u32 hs_type = 0;
|
||||||
switch (type)
|
switch (type)
|
||||||
|
@ -877,7 +877,7 @@ int _sd_storage_enable_highspeed_high_volt(sdmmc_storage_t *storage, u8 *buf)
|
||||||
{
|
{
|
||||||
if (!_sd_storage_switch_get(storage, buf))
|
if (!_sd_storage_switch_get(storage, buf))
|
||||||
return 0;
|
return 0;
|
||||||
//gfx_hexdump(&gfx_con, 0, (u8 *)buf, 64);
|
//gfx_hexdump(0, (u8 *)buf, 64);
|
||||||
if (!(buf[13] & 2))
|
if (!(buf[13] & 2))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -965,7 +965,7 @@ static int _sd_storage_get_ssr(sdmmc_storage_t *storage, u8 *buf)
|
||||||
storage->raw_ssr[i] = buf[i + 3];
|
storage->raw_ssr[i] = buf[i + 3];
|
||||||
}
|
}
|
||||||
_sd_storage_parse_ssr(storage);
|
_sd_storage_parse_ssr(storage);
|
||||||
//gfx_hexdump(&gfx_con, 0, storage->raw_ssr, 64);
|
//gfx_hexdump(0, storage->raw_ssr, 64);
|
||||||
|
|
||||||
return _sdmmc_storage_check_result(tmp);
|
return _sdmmc_storage_check_result(tmp);
|
||||||
}
|
}
|
||||||
|
@ -1090,7 +1090,7 @@ int sdmmc_storage_init_sd(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32 id, u32
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//gfx_hexdump(&gfx_con, 0, storage->raw_scr, 8);
|
//gfx_hexdump(0, storage->raw_scr, 8);
|
||||||
DPRINTF("[SD] got scr\n");
|
DPRINTF("[SD] got scr\n");
|
||||||
|
|
||||||
// Check if card supports a wider bus and if it's not SD Version 1.X
|
// Check if card supports a wider bus and if it's not SD Version 1.X
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "../soc/t210.h"
|
#include "../soc/t210.h"
|
||||||
#include "../utils/util.h"
|
#include "../utils/util.h"
|
||||||
|
|
||||||
//#define DPRINTF(...) gfx_printf(&gfx_con, __VA_ARGS__)
|
//#define DPRINTF(...) gfx_printf(__VA_ARGS__)
|
||||||
#define DPRINTF(...)
|
#define DPRINTF(...)
|
||||||
|
|
||||||
/*! SCMMC controller base addresses. */
|
/*! SCMMC controller base addresses. */
|
||||||
|
|
Loading…
Reference in a new issue