Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abee26cd authored by Mattias Wallin's avatar Mattias Wallin Committed by Lee Jones
Browse files

mfd: ab8500-core: Show turn on status at boot



Several states can be detected when a device is initially turned on.
This patch displays these states in the log. If none of the states
are true, then we report that too.

Signed-off-by: default avatarMattias Wallin <mattias.wallin@stericsson.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Reviewed-by: default avatarMarcus COOPER <marcus.xm.cooper@stericsson.com>
Reviewed-by: default avatarJonas ABERG <jonas.aberg@stericsson.com>
Acked-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 127629d7
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -1542,6 +1542,15 @@ static int ab8500_probe(struct platform_device *pdev)
		"Battery level lower than power on reset threshold",
		"Power on key 1 pressed longer than 10 seconds",
		"DB8500 thermal shutdown"};
	static char *turn_on_status[] = {
		"Battery rising (Vbat)",
		"Power On Key 1 dbF",
		"Power On Key 2 dbF",
		"RTC Alarm",
		"Main Charger Detect",
		"Vbus Detect (USB)",
		"USB ID Detect",
		"UART Factory Mode Detect"};
	struct ab8500_platform_data *plat = dev_get_platdata(&pdev->dev);
	const struct platform_device_id *platid = platform_get_device_id(pdev);
	enum ab8500_version version = AB8500_VERSION_UNDEFINED;
@@ -1655,9 +1664,26 @@ static int ab8500_probe(struct platform_device *pdev)
	} else {
		printk(KERN_CONT " None\n");
	}
	ret = get_register_interruptible(ab8500, AB8500_SYS_CTRL1_BLOCK,
		AB8500_TURN_ON_STATUS, &value);
	if (ret < 0)
		return ret;
	dev_info(ab8500->dev, "turn on reason(s) (%#x): ", value);

	if (value) {
		for (i = 0; i < ARRAY_SIZE(turn_on_status); i++) {
			if (value & 1)
				printk("\"%s\" ", turn_on_status[i]);
			value = value >> 1;
		}
		printk("\n");
	} else {
		printk("None\n");
	}

	if (plat && plat->init)
		plat->init(ab8500);

	if (is_ab9540(ab8500)) {
		ret = get_register_interruptible(ab8500, AB8500_CHARGER,
			AB8500_CH_USBCH_STAT1_REG, &value);