summaryrefslogtreecommitdiffstats
path: root/arch/mips/ath79/prom.c
blob: 597899ad5438e3b551a0b190555546e3a0e5b218 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 *  Atheros AR71XX/AR724X/AR913X specific prom routines
 *
 *  Copyright (C) 2015 Laurent Fasnacht <l@libres.ch>
 *  Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
 *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
 *
 *  This program is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License version 2 as published
 *  by the Free Software Foundation.
 */

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/string.h>
#include <linux/initrd.h>

#include <asm/bootinfo.h>
#include <asm/addrspace.h>
#include <asm/fw/fw.h>

#include "common.h"

void __init prom_init(void)
{
	fw_init_cmdline();

#ifdef CONFIG_BLK_DEV_INITRD
	/* Read the initrd address from the firmware environment */
	initrd_start = fw_getenvl("initrd_start");
	if (initrd_start) {
		initrd_start = KSEG0ADDR(initrd_start);
		initrd_end = initrd_start + fw_getenvl("initrd_size");
	}
#endif
}

void __init prom_free_prom_memory(void)
{
	/* We do not have to prom memory to free */
}
* For use by xmon */ extern void pmu_wait_complete(struct adb_request *req); /* For use before switching interrupts off for a long time; * warning: not stackable */ #if defined(CONFIG_ADB_PMU) extern void pmu_suspend(void); extern void pmu_resume(void); #else static inline void pmu_suspend(void) {} static inline void pmu_resume(void) {} #endif extern void pmu_enable_irled(int on); extern void pmu_restart(void); extern void pmu_shutdown(void); extern void pmu_unlock(void); extern int pmu_present(void); extern int pmu_get_model(void); extern void pmu_backlight_set_sleep(int sleep); #define PMU_MAX_BATTERIES 2 /* values for pmu_power_flags */ #define PMU_PWR_AC_PRESENT 0x00000001 /* values for pmu_battery_info.flags */ #define PMU_BATT_PRESENT 0x00000001 #define PMU_BATT_CHARGING 0x00000002 #define PMU_BATT_TYPE_MASK 0x000000f0 #define PMU_BATT_TYPE_SMART 0x00000010 /* Smart battery */ #define PMU_BATT_TYPE_HOOPER 0x00000020 /* 3400/3500 */ #define PMU_BATT_TYPE_COMET 0x00000030 /* 2400 */ struct pmu_battery_info { unsigned int flags; unsigned int charge; /* current charge */ unsigned int max_charge; /* maximum charge */ signed int amperage; /* current, positive if charging */ unsigned int voltage; /* voltage */ unsigned int time_remaining; /* remaining time */ }; extern int pmu_battery_count; extern struct pmu_battery_info pmu_batteries[PMU_MAX_BATTERIES]; extern unsigned int pmu_power_flags; /* Backlight */ extern void pmu_backlight_init(void); /* some code needs to know if the PMU was suspended for hibernation */ #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) extern int pmu_sys_suspended; #else /* if power management is not configured it can't be suspended */ #define pmu_sys_suspended 0 #endif #endif /* _LINUX_PMU_H */