X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fplatform-powerpc.c;h=2ce69e76f892ace0f6b06bae728edb20d362f25f;hp=24cc521c12c98c40f57c2fbec42400ee71f6f556;hb=6897abaa97a02e0ab8ac07209a5e4966bfe101c5;hpb=052961eb2e8279f103c091e850c317da335c0207;ds=sidebyside diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index 24cc521..2ce69e7 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -738,6 +739,23 @@ static int save_config(struct platform *p, struct config *config) return rc; } +static int get_sysinfo(struct platform *p, struct system_info *sysinfo) +{ + struct platform_powerpc *platform = p->platform_data; + int len, rc; + char *buf; + + rc = read_file(platform, "/proc/device_tree/model", &buf, &len); + if (rc == 0) + sysinfo->type = talloc_steal(sysinfo, buf); + + rc = read_file(platform, "/proc/device_tree/system-id", &buf, &len); + if (rc == 0) + sysinfo->identifier = talloc_steal(sysinfo, buf); + + return 0; +} + static bool probe(struct platform *p, void *ctx) { struct platform_powerpc *platform; @@ -759,12 +777,14 @@ static bool probe(struct platform *p, void *ctx) return true; } + static struct platform platform_powerpc = { .name = "powerpc", .dhcp_arch_id = 0x000e, .probe = probe, .load_config = load_config, .save_config = save_config, + .get_sysinfo = get_sysinfo, }; register_platform(platform_powerpc);