Skip to content
This repository has been archived by the owner on Apr 14, 2023. It is now read-only.

Commit

Permalink
T8030.c: set region-size and sram-addr
Browse files Browse the repository at this point in the history
apple_smc.c: get sram-addr from devicetree
  • Loading branch information
TrungNguyen1909 committed Apr 6, 2022
1 parent 259dacf commit 9e0db8d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
7 changes: 7 additions & 0 deletions hw/arm/t8030.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
#define T8030_ANS_TEXT_SIZE (0x124000)
#define T8030_ANS_DATA_BASE (0x8fc400000)
#define T8030_ANS_DATA_SIZE (0x3c00000)
#define T8030_SMC_REGION_SIZE (0x80000)
#define T8030_SMC_TEXT_BASE (0x23fe00000)
#define T8030_SMC_TEXT_SIZE (0x30000)
#define T8030_SMC_DATA_BASE (0x23fe30000)
Expand Down Expand Up @@ -1237,6 +1238,7 @@ static void t8030_create_smc(MachineState* machine)
uint32_t *ints;
DTBProp *prop;
uint64_t *reg;
uint64_t data;
T8030MachineState *tms = T8030_MACHINE(machine);
SysBusDevice *smc;
DTBNode *child = find_dtb_node(tms->device_tree, "arm-io");
Expand Down Expand Up @@ -1265,6 +1267,11 @@ static void t8030_create_smc(MachineState* machine)

set_dtb_prop(iop_nub, "segment-ranges", 64, (uint8_t *)segranges);

data = T8030_SMC_REGION_SIZE;
set_dtb_prop(iop_nub, "region-size", 8, (uint8_t *)&data);
data = T8030_SMC_SRAM_BASE;
set_dtb_prop(iop_nub, "sram-addr", 8, (uint8_t *)&data);

smc = apple_smc_create(child, tms->build_version);
assert(smc);

Expand Down
9 changes: 3 additions & 6 deletions hw/misc/apple_smc.c
Original file line number Diff line number Diff line change
Expand Up @@ -452,8 +452,6 @@ SysBusDevice *apple_smc_create(DTBNode *node, uint32_t build_version)
uint64_t *reg;
uint32_t protocol_version = 0;
uint32_t data;
xnu_iop_segment_range *segment_ranges = NULL;
xnu_iop_segment_range *last_segment = NULL;

dev = qdev_new(TYPE_APPLE_SMC_IOP);
s = APPLE_SMC_IOP(dev);
Expand Down Expand Up @@ -495,12 +493,11 @@ SysBusDevice *apple_smc_create(DTBNode *node, uint32_t build_version)
TYPE_APPLE_SMC_IOP ".ascv2-core-reg", reg[3]);
sysbus_init_mmio(sbd, s->iomems[1]);

prop = find_dtb_prop(child, "segment-ranges");
prop = find_dtb_prop(child, "sram-addr");
assert(prop != NULL);
segment_ranges = (xnu_iop_segment_range *)prop->value;
assert(prop->length = 8);

last_segment = &segment_ranges[prop->length / sizeof(*segment_ranges) - 1];
s->sram_addr = last_segment->phys + last_segment->size; /* size: 0x4000 */
s->sram_addr = *(uint64_t *)prop->value;
s->iomems[2] = g_new(MemoryRegion, 1);
memory_region_init_ram_device_ptr(s->iomems[2], OBJECT(dev),
TYPE_APPLE_SMC_IOP ".sram",
Expand Down

0 comments on commit 9e0db8d

Please sign in to comment.