Merge pull request #85 from leoetlino/boot

boot: Fix usage of svcQueryIoMapping and building
This commit is contained in:
hexkyz 2018-05-06 15:55:04 +01:00 committed by GitHub
commit a9513f8d2f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -145,7 +145,7 @@ static const std::tuple<u32, bool, bool> g_gpio_map[] = {
{0x000000E6, false, false}, /* Port CC, Pin 6 */ {0x000000E6, false, false}, /* Port CC, Pin 6 */
}; };
int gpio_configure(unsigned int gpio_pad_name) { static int gpio_configure(u64 gpio_base_vaddr, unsigned int gpio_pad_name) {
/* Fetch this GPIO's pad descriptor */ /* Fetch this GPIO's pad descriptor */
u32 gpio_pad_desc = std::get<0>(g_gpio_map[gpio_pad_name]); u32 gpio_pad_desc = std::get<0>(g_gpio_map[gpio_pad_name]);
@ -164,7 +164,7 @@ int gpio_configure(unsigned int gpio_pad_name) {
return gpio_cnf_val; return gpio_cnf_val;
} }
int gpio_set_direction(unsigned int gpio_pad_name) { static int gpio_set_direction(u64 gpio_base_vaddr, unsigned int gpio_pad_name) {
/* Fetch this GPIO's pad descriptor */ /* Fetch this GPIO's pad descriptor */
u32 gpio_pad_desc = std::get<0>(g_gpio_map[gpio_pad_name]); u32 gpio_pad_desc = std::get<0>(g_gpio_map[gpio_pad_name]);
@ -186,7 +186,7 @@ int gpio_set_direction(unsigned int gpio_pad_name) {
return gpio_oe_val; return gpio_oe_val;
} }
int gpio_set_output(unsigned int gpio_pad_name) { static int gpio_set_output(u64 gpio_base_vaddr, unsigned int gpio_pad_name) {
/* Fetch this GPIO's pad descriptor */ /* Fetch this GPIO's pad descriptor */
u32 gpio_pad_desc = std::get<0>(g_gpio_map[gpio_pad_name]); u32 gpio_pad_desc = std::get<0>(g_gpio_map[gpio_pad_name]);
@ -213,12 +213,12 @@ int main(int argc, char **argv)
consoleDebugInit(debugDevice_SVC); consoleDebugInit(debugDevice_SVC);
Result rc; Result rc;
u64* pinmux_base_vaddr = NULL; u64 pinmux_base_vaddr = 0;
u64* gpio_base_vaddr = NULL; u64 gpio_base_vaddr = 0;
u64* pmc_base_vaddr = NULL; u64 pmc_base_vaddr = 0;
/* Map the APB MISC registers for PINMUX */ /* Map the APB MISC registers for PINMUX */
rc = svcQueryIoMapping(pinmux_base_vaddr, APB_MISC_BASE, 0x4000); rc = svcQueryIoMapping(&pinmux_base_vaddr, APB_MISC_BASE, 0x4000);
if (R_FAILED(rc)) { if (R_FAILED(rc)) {
return rc; return rc;
} }
@ -228,7 +228,7 @@ int main(int argc, char **argv)
fatalSimple(MAKERESULT(Module_Libnx, LibnxError_IoError)); fatalSimple(MAKERESULT(Module_Libnx, LibnxError_IoError));
/* Map the GPIO registers */ /* Map the GPIO registers */
rc = svcQueryIoMapping(gpio_base_vaddr, GPIO_BASE, 0x1000); rc = svcQueryIoMapping(&gpio_base_vaddr, GPIO_BASE, 0x1000);
if (R_FAILED(rc)) { if (R_FAILED(rc)) {
return rc; return rc;
} }
@ -242,7 +242,7 @@ int main(int argc, char **argv)
/* TODO: svcReadWriteRegister */ /* TODO: svcReadWriteRegister */
} else { } else {
/* Map the PMC registers directly */ /* Map the PMC registers directly */
rc = svcQueryIoMapping(pmc_base_vaddr, PMC_BASE, 0x3000); rc = svcQueryIoMapping(&pmc_base_vaddr, PMC_BASE, 0x3000);
if (R_FAILED(rc)) { if (R_FAILED(rc)) {
return rc; return rc;
} }
@ -263,9 +263,9 @@ int main(int argc, char **argv)
/* Setup all GPIOs from 0x01 to 0x3C */ /* Setup all GPIOs from 0x01 to 0x3C */
for (unsigned int i = 1; i < MAX_GPIOS; i++) { for (unsigned int i = 1; i < MAX_GPIOS; i++) {
gpio_configure(i); gpio_configure(gpio_base_vaddr, i);
gpio_set_direction(i); gpio_set_direction(gpio_base_vaddr, i);
gpio_set_output(i); gpio_set_output(gpio_base_vaddr, i);
} }
/* TODO: Hardware setup, NAND repair, NotifyBootFinished */ /* TODO: Hardware setup, NAND repair, NotifyBootFinished */