X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fcommon%2Fps3.c;h=c9b97b5d2ca9da734b8b934c5113cc7c5ae59e18;hp=9f575e795d5b850f2c6c7f40279855f27aa5233f;hb=0dd467aef0f1e104faf8ad5b1d4deaaf71732278;hpb=ea45e832b0d3e4a6e8c63f6a1c4741795b0b33dd diff --git a/ui/common/ps3.c b/ui/common/ps3.c index 9f575e7..c9b97b5 100644 --- a/ui/common/ps3.c +++ b/ui/common/ps3.c @@ -16,7 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#define _GNU_SOURCE +#if defined(HAVE_CONFIG_H) +#include "config.h" +#endif #include #include @@ -28,7 +30,7 @@ #include #include "log/log.h" -#include "pb-system.h" +#include "ui-system.h" #include "ps3.h" static const char flash_dev[] = "/dev/ps3flash"; @@ -49,6 +51,11 @@ static const struct os_area_db_id id_flags = .owner = OS_AREA_DB_OWNER_PETITBOOT, /* 3 */ .key = 3, }; +static const struct os_area_db_id id_timeout = +{ + .owner = OS_AREA_DB_OWNER_PETITBOOT, /* 3 */ + .key = 4, +}; struct ps3_flash_ctx { FILE *dev; @@ -59,6 +66,8 @@ struct ps3_flash_ctx { static void ps3_flash_close(struct ps3_flash_ctx *fc) { + assert(fc->dev); + fclose(fc->dev); fc->dev = NULL; } @@ -80,7 +89,7 @@ static int ps3_flash_open(struct ps3_flash_ctx *fc, const char *mode) result = os_area_fixed_read(&fc->header, &fc->params, fc->dev); if (result) { - pb_log("%s: os_area_fixed_read failed: %s\n", __func__); + pb_log("%s: os_area_fixed_read failed\n", __func__); goto fail; } @@ -104,15 +113,15 @@ int ps3_flash_get_values(struct ps3_flash_values *values) struct ps3_flash_ctx fc; uint64_t tmp; - memset(values, 0, sizeof(*values)); - result = ps3_flash_open(&fc, "r"); if (result) - return -1; + goto fail; result = os_area_db_read(&fc.db, &fc.header, fc.dev); + ps3_flash_close(&fc); + if (result) { pb_log("%s: os_area_db_read failed: %s\n", __func__, strerror(errno)); @@ -124,21 +133,24 @@ int ps3_flash_get_values(struct ps3_flash_values *values) if (!result) values->default_item = (uint32_t)tmp; - sum += result = os_area_db_get(&fc.db, &id_video_mode, &tmp); + result = os_area_db_get(&fc.db, &id_timeout, &tmp); if (!result) - values->video_mode = (uint16_t)tmp; - + values->timeout = (uint8_t)tmp; - pb_log("%s: default_item: %u\n", __func__, values->default_item); - pb_log("%s: video_mode: %u\n", __func__, values->video_mode); + sum += result = os_area_db_get(&fc.db, &id_video_mode, &tmp); - ps3_flash_close(&fc); - return !!sum; + if (!result) + values->video_mode = (uint16_t)tmp; + pb_debug("%s: default_item: %x\n", __func__, + (unsigned int)values->default_item); + pb_debug("%s: timeout: %u\n", __func__, + (unsigned int)values->timeout); + pb_debug("%s: video_mode: %u\n", __func__, + (unsigned int)values->video_mode); fail: - ps3_flash_close(&fc); - return -1; + return (result || sum) ? -1 : 0; } /** @@ -153,8 +165,8 @@ int ps3_flash_set_values(const struct ps3_flash_values *values) int result; struct ps3_flash_ctx fc; - pb_log("%s: default_item: %u\n", __func__, values->default_item); - pb_log("%s: video_mode: %u\n", __func__, values->video_mode); + pb_debug("%s: default_item: %u\n", __func__, values->default_item); + pb_debug("%s: video_mode: %u\n", __func__, values->video_mode); result = ps3_flash_open(&fc, "r+"); @@ -177,6 +189,8 @@ int ps3_flash_set_values(const struct ps3_flash_values *values) } } + /* timeout is currently read-only, set with ps3-bl-option */ + result = os_area_db_set_32(&fc.db, &id_default_item, values->default_item); result += os_area_db_set_16(&fc.db, &id_video_mode, @@ -233,7 +247,7 @@ static int ps3_video_ioctl(int request, unsigned int *mode_id) int ps3_set_video_mode(unsigned int mode_id) { - pb_log("%s: %u\n", __func__, mode_id); + pb_debug("%s: %u\n", __func__, mode_id); return ps3_video_ioctl(PS3FB_IOCTL_SETMODE, &mode_id); }