From: chaoskagami Date: Fri, 8 Jul 2016 23:54:48 +0000 (-0400) Subject: Misc cleanup X-Git-Tag: v0.2.0~28 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=8ebd1e81060543c04a0f929264ad31314ac5e9e2;p=corbenik%2Fcorbenik.git Misc cleanup --- diff --git a/source/common.h b/source/common.h index 7c0845e..46eedd1 100644 --- a/source/common.h +++ b/source/common.h @@ -17,6 +17,4 @@ #include "input.h" #include "patcher.h" -#include "i2c.h" - #endif diff --git a/source/i2c.c b/source/i2c.c deleted file mode 100644 index 16db5c8..0000000 --- a/source/i2c.c +++ /dev/null @@ -1,167 +0,0 @@ -#include "i2c.h" - -//----------------------------------------------------------------------------- - -static const struct -{ - uint8_t bus_id, reg_addr; -} dev_data[] = { - { 0, 0x4A }, { 0, 0x7A }, { 0, 0x78 }, { 1, 0x4A }, { 1, 0x78 }, { 1, 0x2C }, { 1, 0x2E }, { 1, 0x40 }, - { 1, 0x44 }, { 2, 0xD6 }, { 2, 0xD0 }, { 2, 0xD2 }, { 2, 0xA4 }, { 2, 0x9A }, { 2, 0xA0 }, -}; - -uint8_t -i2cGetDeviceBusId(uint8_t device_id) -{ - return dev_data[device_id].bus_id; -} - -uint8_t -i2cGetDeviceRegAddr(uint8_t device_id) -{ - return dev_data[device_id].reg_addr; -} - -//----------------------------------------------------------------------------- - -static volatile uint8_t *const reg_data_addrs[] = { - (volatile uint8_t *)(I2C1_REG_OFF + I2C_REG_DATA), (volatile uint8_t *)(I2C2_REG_OFF + I2C_REG_DATA), (volatile uint8_t *)(I2C3_REG_OFF + I2C_REG_DATA), -}; - -volatile uint8_t * -i2cGetDataReg(uint8_t bus_id) -{ - return reg_data_addrs[bus_id]; -} - -//----------------------------------------------------------------------------- - -static volatile uint8_t *const reg_cnt_addrs[] = { - (volatile uint8_t *)(I2C1_REG_OFF + I2C_REG_CNT), (volatile uint8_t *)(I2C2_REG_OFF + I2C_REG_CNT), (volatile uint8_t *)(I2C3_REG_OFF + I2C_REG_CNT), -}; - -volatile uint8_t * -i2cGetCntReg(uint8_t bus_id) -{ - return reg_cnt_addrs[bus_id]; -} - -//----------------------------------------------------------------------------- - -void -i2cWaitBusy(uint8_t bus_id) -{ - while (*i2cGetCntReg(bus_id) & 0x80) - ; -} - -int -i2cGetResult(uint8_t bus_id) -{ - i2cWaitBusy(bus_id); - return (*i2cGetCntReg(bus_id) >> 4) & 1; -} - -void -i2cStop(uint8_t bus_id, uint8_t arg0) -{ - *i2cGetCntReg(bus_id) = (arg0 << 5) | 0xC0; - i2cWaitBusy(bus_id); - *i2cGetCntReg(bus_id) = 0xC5; -} - -//----------------------------------------------------------------------------- - -int -i2cSelectDevice(uint8_t bus_id, uint8_t dev_reg) -{ - i2cWaitBusy(bus_id); - *i2cGetDataReg(bus_id) = dev_reg; - *i2cGetCntReg(bus_id) = 0xC2; - return i2cGetResult(bus_id); -} - -int -i2cSelectRegister(uint8_t bus_id, uint8_t reg) -{ - i2cWaitBusy(bus_id); - *i2cGetDataReg(bus_id) = reg; - *i2cGetCntReg(bus_id) = 0xC0; - return i2cGetResult(bus_id); -} - -//----------------------------------------------------------------------------- - -uint8_t -i2cReadRegister(uint8_t dev_id, uint8_t reg) -{ - uint8_t bus_id = i2cGetDeviceBusId(dev_id); - uint8_t dev_addr = i2cGetDeviceRegAddr(dev_id); - - for (size_t i = 0; i < 8; i++) { - if (i2cSelectDevice(bus_id, dev_addr) && i2cSelectRegister(bus_id, reg)) { - if (i2cSelectDevice(bus_id, dev_addr | 1)) { - i2cWaitBusy(bus_id); - i2cStop(bus_id, 1); - i2cWaitBusy(bus_id); - return *i2cGetDataReg(bus_id); - } - } - *i2cGetCntReg(bus_id) = 0xC5; - i2cWaitBusy(bus_id); - } - return 0xff; -} - -int -i2cReadRegisterBuffer(unsigned int dev_id, int reg, uint8_t *buffer, size_t buf_size) -{ - uint8_t bus_id = i2cGetDeviceBusId(dev_id); - uint8_t dev_addr = i2cGetDeviceRegAddr(dev_id); - - size_t j = 0; - while (!i2cSelectDevice(bus_id, dev_addr) || !i2cSelectRegister(bus_id, reg) || !i2cSelectDevice(bus_id, dev_addr | 1)) { - i2cWaitBusy(bus_id); - *i2cGetCntReg(bus_id) = 0xC5; - i2cWaitBusy(bus_id); - if (++j >= 8) - return 0; - } - - if (buf_size != 1) { - for (size_t i = 0; i < buf_size - 1; i++) { - i2cWaitBusy(bus_id); - *i2cGetCntReg(bus_id) = 0xF0; - i2cWaitBusy(bus_id); - buffer[i] = *i2cGetDataReg(bus_id); - } - } - - i2cWaitBusy(bus_id); - *i2cGetCntReg(bus_id) = 0xE1; - i2cWaitBusy(bus_id); - *buffer = *i2cGetDataReg(bus_id); - return 1; -} - -int -i2cWriteRegister(uint8_t dev_id, uint8_t reg, uint8_t data) -{ - uint8_t bus_id = i2cGetDeviceBusId(dev_id); - uint8_t dev_addr = i2cGetDeviceRegAddr(dev_id); - - for (int i = 0; i < 8; i++) { - if (i2cSelectDevice(bus_id, dev_addr) && i2cSelectRegister(bus_id, reg)) { - i2cWaitBusy(bus_id); - *i2cGetDataReg(bus_id) = data; - *i2cGetCntReg(bus_id) = 0xC1; - i2cStop(bus_id, 0); - if (i2cGetResult(bus_id)) - return 1; - } - *i2cGetCntReg(bus_id) = 0xC5; - i2cWaitBusy(bus_id); - } - - return 0; -} diff --git a/source/i2c.h b/source/i2c.h deleted file mode 100644 index e3e9f85..0000000 --- a/source/i2c.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef __I2C_H -#define __I2C_H - -#include "common.h" - -#define I2C1_REG_OFF 0x10161000 -#define I2C2_REG_OFF 0x10144000 -#define I2C3_REG_OFF 0x10148000 - -#define I2C_REG_DATA 0 -#define I2C_REG_CNT 1 -#define I2C_REG_CNTEX 2 -#define I2C_REG_SCL 4 - -#define I2C_DEV_MCU 3 -#define I2C_DEV_GYRO 10 -#define I2C_DEV_IR 13 - -uint8_t i2cGetDeviceBusId(uint8_t device_id); -uint8_t i2cGetDeviceRegAddr(uint8_t device_id); - -volatile uint8_t *i2cGetDataReg(uint8_t bus_id); -volatile uint8_t *i2cGetCntReg(uint8_t bus_id); - -void i2cWaitBusy(uint8_t bus_id); -int i2cGetResult(uint8_t bus_id); -uint8_t i2cGetData(uint8_t bus_id); -void i2cStop(uint8_t bus_id, uint8_t arg0); - -int i2cSelectDevice(uint8_t bus_id, uint8_t dev_reg); -int i2cSelectRegister(uint8_t bus_id, uint8_t reg); - -uint8_t i2cReadRegister(uint8_t dev_id, uint8_t reg); -int i2cWriteRegister(uint8_t dev_id, uint8_t reg, uint8_t data); - -int i2cReadRegisterBuffer(unsigned int dev_id, int reg, uint8_t *buffer, size_t buf_size); - -#endif diff --git a/source/menu.c b/source/menu.c index e589c73..1392b59 100644 --- a/source/menu.c +++ b/source/menu.c @@ -3,6 +3,8 @@ #include "firm/headers.h" #include "std/unused.h" +#include + #define MAX_PATCHES ((FCRAM_SPACING / 2) / sizeof(struct options_s)) struct options_s *patches = (struct options_s *)FCRAM_MENU_LOC; uint8_t *enable_list = (uint8_t *)FCRAM_PATCHLIST_LOC; @@ -242,9 +244,8 @@ reset() // Reboot. fprintf(BOTTOM_SCREEN, "Rebooting system...\n"); - i2cWriteRegister(I2C_DEV_MCU, 0x20, 1 << 2); - while (1) - ; + + ctr_system_reset(); } void @@ -254,11 +255,10 @@ poweroff() fumount(); // Unmount SD. - // Reboot. + // Power off fprintf(BOTTOM_SCREEN, "Powering off system...\n"); - i2cWriteRegister(I2C_DEV_MCU, 0x20, 1 << 0); - while (1) - ; + + ctr_system_poweroff(); } #if defined(CHAINLOADER) && CHAINLOADER == 1 diff --git a/source/screeninit.c b/source/screeninit.c index 81cc4c8..42689fc 100644 --- a/source/screeninit.c +++ b/source/screeninit.c @@ -1,5 +1,6 @@ +#include +#include #include "std/fs.h" -#include "i2c.h" #include "patch_format.h" #define PDN_GPU_CNT (*(volatile uint8_t *)0x10141200) @@ -20,10 +21,9 @@ screen_init() screenInitAddress[2] = 0x5F; *a11_entry = (uint32_t)screenInitAddress; - while (*a11_entry) - ; + while (*a11_entry); // Turn on backlight - i2cWriteRegister(I2C_DEV_MCU, 0x22, 0x2A); + ctr_screen_enable_backlight(CTR_SCREEN_BOTH); } }