LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
xenon_config.c
Go to the documentation of this file.
1/*
2 * xenon_config.c
3 *
4 * Created on: Mar 4, 2011
5 */
6
7#include <xetypes.h>
8#include <stdio.h>
9#include <string.h>
10#include "xenon_config.h"
11#include "xenon_sfcx.h"
12#include "xb360/xb360.h"
13
14#define BLOCK_OFFSET 3
15
16extern struct sfc sfc;
18
19static int xenon_config_initialized=0;
20unsigned char pagebuf[MAX_PAGE_SZ]; //Max known hardware physical page size
21
23{
24 if (xenon_config_initialized)
25 return;
26
27 uint32_t addr = 0;
28
31 else
32 {
33 sfcx_init();
35 {
36 printf(" ! config: sfcx not initialized\n"); //Incompatible model found?!
37 return;
38 }
39 else
40 addr = sfc.addr_config + (BLOCK_OFFSET * sfc.block_sz) + sfc.page_sz; //Get Adress based on SFC type
41 }
43 xenon_config_initialized=1;
44}
45
47{
48 xenon_config_init(); //Make sure it's initalized!
49
50 unsigned char buf[0x4] = {0x00,0x00,0x00,0x00};
51
52 //read from nand
53 memcpy(buf, &secured_settings.AVRegion, 4);
54
55 //check if we got erased nand data
56 if (buf[0x0]==0xFF && buf[0x1]==0xFF && buf[0x2]==0xFF)
57 return 0;
58
59 //check if we got zeroed nand data
60 if (buf[0x0]==0x00 && buf[0x1]==0x00 && buf[0x2]==0x00)
61 return 0;
62
63
64
65 if (buf[0x2] >= 0x01 && buf[0x2] <= 0x04)
66 return buf[0x2];
67 else
68 {
69 printf(" !!! Unknown AVRegion: %02X!!!\n",buf[0x2]);
70 return buf[0x2];
71 }
72}
73
74void xenon_config_get_mac_addr(unsigned char *hwaddr)
75{
76 xenon_config_init(); //Make sure it's initalized!
77
78 unsigned char dmac[0x6] = {0x00,0x22,0x48,0xFF,0xFF,0xFF};
79
80 //read from nand
81 memcpy(hwaddr, &secured_settings.MACAddress[0x0], 6);
82
83 //check if we got erased nand data
84 if (hwaddr[0x0]==0xFF && hwaddr[0x1]==0xFF && hwaddr[0x2]==0xFF)
85 memcpy(hwaddr, dmac, 6);
86
87 //check if we got zeroed nand data
88 if (hwaddr[0x0]==0x00 && hwaddr[0x1]==0x00 && hwaddr[0x2]==0x00)
89 memcpy(hwaddr, dmac, 6);
90
91 //printf("NIC MAC set to %02X%02X%02X%02X%02X%02X\n",
92 // hwaddr[0], hwaddr[1], hwaddr[2], hwaddr[3], hwaddr[4], hwaddr[5]);
93}
94
96{
97 xenon_config_init(); //Make sure it's initalized!
98
100
101 //check if we got erased or zeroed nand data
102 if (delta==0 || delta==0xff) return -1;
103
104 return delta;
105}
u32 uint32_t
Definition: libfdt_env.h:11
struct XCONFIG_POWER_MODE PowerMode
Definition: xenon_config.h:42
Definition: xenon_sfcx.h:84
int page_sz
Definition: xenon_sfcx.h:88
int block_sz
Definition: xenon_sfcx.h:93
int initialized
Definition: xenon_sfcx.h:85
int addr_config
Definition: xenon_sfcx.h:104
int xenon_get_logical_nand_data(void *buf, unsigned int offset, unsigned int len)
Definition: xb360.c:528
int xenon_get_console_type()
Definition: xb360.c:480
#define REV_CORONA_PHISON
Definition: xb360.h:97
void xenon_config_init(void)
Definition: xenon_config.c:22
void xenon_config_get_mac_addr(unsigned char *hwaddr)
Definition: xenon_config.c:74
struct XCONFIG_SECURED_SETTINGS secured_settings
Definition: xenon_config.c:17
int xenon_config_get_vid_delta()
Definition: xenon_config.c:95
int xenon_config_get_avregion(void)
Definition: xenon_config.c:46
#define BLOCK_OFFSET
Definition: xenon_config.c:14
unsigned char pagebuf[MAX_PAGE_SZ]
Definition: xenon_config.c:20
#define PHISON_STATIC_CONFIG_ADDR
Definition: xenon_config.h:53
unsigned int sfcx_init(void)
Definition: xenon_sfcx.c:645
#define SFCX_INITIALIZED
Definition: xenon_sfcx.h:76
#define MAX_PAGE_SZ
Definition: xenon_sfcx.h:61
uint8_t u8
8bit unsigned integer
Definition: xetypes.h:12