mirror of
https://github.com/ps5-linux/ps5-linux-loader.git
synced 2026-07-16 01:50:40 +00:00
Add back transmitter_control.
This commit is contained in:
@@ -4,6 +4,12 @@
|
||||
#include "../shellcode_hv/shellcode_hv.h"
|
||||
#include "utils.h"
|
||||
|
||||
#define DIG1TRANSMITTERCONTROL 0x4c
|
||||
|
||||
#define TRANSMITTER_CONTROL_ENABLE 1
|
||||
#define TRANSMITTER_CONTROL_SET_VOLTAGE_AND_PREEMPASIS 11
|
||||
|
||||
int (*transmitter_control)(int cmd, void *control) = NULL;
|
||||
int (*mp3_initialize)(int vmid) = NULL;
|
||||
int (*mp3_invoke)(int cmd_id, void *req, void *rsp) = NULL;
|
||||
|
||||
@@ -28,6 +34,30 @@ typedef struct {
|
||||
uint8_t reserved[64];
|
||||
} __attribute__((packed)) SceSblHvShm;
|
||||
|
||||
typedef struct {
|
||||
uint8_t lanenum;
|
||||
uint32_t rate;
|
||||
uint32_t pad;
|
||||
uint32_t lane_setting_1;
|
||||
uint32_t lane_setting_2;
|
||||
} transmitter_args;
|
||||
|
||||
struct dig_transmitter_control_parameters_v1_6 {
|
||||
uint8_t phyid;
|
||||
uint8_t action;
|
||||
union {
|
||||
uint8_t digmode;
|
||||
uint8_t dplaneset;
|
||||
} mode_laneset;
|
||||
uint8_t lanenum;
|
||||
uint32_t symclk_10khz;
|
||||
uint8_t hpdsel;
|
||||
uint8_t digfe_sel;
|
||||
uint8_t connobj_id;
|
||||
uint8_t reserved;
|
||||
uint32_t reserved1;
|
||||
};
|
||||
|
||||
static struct linux_info info;
|
||||
|
||||
static int mp3_req[1281], mp3_rsp[1282];
|
||||
@@ -55,6 +85,20 @@ static uint64_t get_hv_shm(void) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int dp_enable_link_phy(int lanenum, int linkrate) {
|
||||
struct dig_transmitter_control_parameters_v1_6 params = {};
|
||||
params.phyid = 0;
|
||||
params.action = TRANSMITTER_CONTROL_ENABLE;
|
||||
params.mode_laneset.digmode = 0;
|
||||
params.lanenum = lanenum;
|
||||
params.symclk_10khz = 27000 * linkrate / 10;
|
||||
params.hpdsel = 0;
|
||||
params.digfe_sel = 0;
|
||||
params.connobj_id = 0;
|
||||
|
||||
return transmitter_control(DIG1TRANSMITTERCONTROL, ¶ms);
|
||||
}
|
||||
|
||||
static int mp3_set_hdcp_packet(int be, int mode) {
|
||||
mp3_req[0] = be;
|
||||
mp3_req[1] = mode;
|
||||
@@ -132,6 +176,9 @@ void boot_linux(void) {
|
||||
|
||||
memcpy((void *)PHYS_TO_DMAP(0xC0000), (void *)g_vbios, 0x10000);
|
||||
|
||||
// Enable DP phys link.
|
||||
dp_enable_link_phy(4, 30);
|
||||
|
||||
// Initialize hdcp in mp3.
|
||||
mp3_initialize(0);
|
||||
mp3_set_hdcp_packet(0, 1);
|
||||
|
||||
Reference in New Issue
Block a user