mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 06:50:43 -04:00
Merge branch 'for-2.6.22' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'for-2.6.22' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (255 commits) [POWERPC] Remove dev_dbg redefinition in drivers/ps3/vuart.c [POWERPC] remove kernel module option for booke wdt [POWERPC] Avoid putting cpu node twice [POWERPC] Spinlock initializer cleanup [POWERPC] ppc4xx_sgdma needs dma-mapping.h [POWERPC] arch/powerpc/sysdev/timer.c build fix [POWERPC] get_property cleanups [POWERPC] Remove the unused HTDMSOUND driver [POWERPC] cell: cbe_cpufreq cleanup and crash fix [POWERPC] Declare enable_kernel_spe in a header [POWERPC] Add dt_xlate_addr() to bootwrapper [POWERPC] bootwrapper: CONFIG_ -> CONFIG_DEVICE_TREE [POWERPC] Don't define a custom bd_t for Xilixn Virtex based boards. [POWERPC] Add sane defaults for Xilinx EDK generated xparameters files [POWERPC] Add uartlite boot console driver for the zImage wrapper [POWERPC] Stop using ppc_sys for Xilinx Virtex boards [POWERPC] New registration for common Xilinx Virtex ppc405 platform devices [POWERPC] Merge common virtex header files [POWERPC] Rework Kconfig dependancies for Xilinx Virtex ppc405 platform [POWERPC] Clean up cpufreq Kconfig dependencies ...
This commit is contained in:
@@ -202,13 +202,16 @@ static struct miscdevice briq_panel_miscdev = {
|
||||
|
||||
static int __init briq_panel_init(void)
|
||||
{
|
||||
struct device_node *root = find_path_device("/");
|
||||
struct device_node *root = of_find_node_by_path("/");
|
||||
const char *machine;
|
||||
int i;
|
||||
|
||||
machine = get_property(root, "model", NULL);
|
||||
if (!machine || strncmp(machine, "TotalImpact,BRIQ-1", 18) != 0)
|
||||
if (!machine || strncmp(machine, "TotalImpact,BRIQ-1", 18) != 0) {
|
||||
of_node_put(root);
|
||||
return -ENODEV;
|
||||
}
|
||||
of_node_put(root);
|
||||
|
||||
printk(KERN_INFO
|
||||
"briq_panel: v%s Dr. Karsten Jeppesen (kj@totalimpact.com)\n",
|
||||
|
||||
@@ -47,8 +47,6 @@
|
||||
#define HVC_MAJOR 229
|
||||
#define HVC_MINOR 0
|
||||
|
||||
#define TIMEOUT (10)
|
||||
|
||||
/*
|
||||
* Wait this long per iteration while trying to push buffered data to the
|
||||
* hypervisor before allowing the tty to complete a close operation.
|
||||
@@ -104,12 +102,12 @@ static DEFINE_SPINLOCK(hvc_structs_lock);
|
||||
/*
|
||||
* This value is used to assign a tty->index value to a hvc_struct based
|
||||
* upon order of exposure via hvc_probe(), when we can not match it to
|
||||
* a console canidate registered with hvc_instantiate().
|
||||
* a console candidate registered with hvc_instantiate().
|
||||
*/
|
||||
static int last_hvc = -1;
|
||||
|
||||
/*
|
||||
* Do not call this function with either the hvc_strucst_lock or the hvc_struct
|
||||
* Do not call this function with either the hvc_structs_lock or the hvc_struct
|
||||
* lock held. If successful, this function increments the kobject reference
|
||||
* count against the target hvc_struct so it should be released when finished.
|
||||
*/
|
||||
@@ -162,7 +160,7 @@ void hvc_console_print(struct console *co, const char *b, unsigned count)
|
||||
if (index >= MAX_NR_HVC_CONSOLES)
|
||||
return;
|
||||
|
||||
/* This console adapter was removed so it is not useable. */
|
||||
/* This console adapter was removed so it is not usable. */
|
||||
if (vtermnos[index] < 0)
|
||||
return;
|
||||
|
||||
@@ -220,7 +218,7 @@ struct console hvc_con_driver = {
|
||||
};
|
||||
|
||||
/*
|
||||
* Early console initialization. Preceeds driver initialization.
|
||||
* Early console initialization. Precedes driver initialization.
|
||||
*
|
||||
* (1) we are first, and the user specified another driver
|
||||
* -- index will remain -1
|
||||
@@ -257,7 +255,7 @@ int hvc_instantiate(uint32_t vtermno, int index, struct hv_ops *ops)
|
||||
if (vtermnos[index] != -1)
|
||||
return -1;
|
||||
|
||||
/* make sure no no tty has been registerd in this index */
|
||||
/* make sure no no tty has been registered in this index */
|
||||
hp = hvc_get_by_index(index);
|
||||
if (hp) {
|
||||
kobject_put(&hp->kobj);
|
||||
@@ -267,7 +265,7 @@ int hvc_instantiate(uint32_t vtermno, int index, struct hv_ops *ops)
|
||||
vtermnos[index] = vtermno;
|
||||
cons_ops[index] = ops;
|
||||
|
||||
/* reserve all indices upto and including this index */
|
||||
/* reserve all indices up to and including this index */
|
||||
if (last_hvc < index)
|
||||
last_hvc = index;
|
||||
|
||||
@@ -528,7 +526,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count
|
||||
|
||||
/*
|
||||
* This is actually a contract between the driver and the tty layer outlining
|
||||
* how much write room the driver can guarentee will be sent OR BUFFERED. This
|
||||
* how much write room the driver can guarantee will be sent OR BUFFERED. This
|
||||
* driver MUST honor the return value.
|
||||
*/
|
||||
static int hvc_write_room(struct tty_struct *tty)
|
||||
@@ -550,6 +548,18 @@ static int hvc_chars_in_buffer(struct tty_struct *tty)
|
||||
return hp->n_outbuf;
|
||||
}
|
||||
|
||||
/*
|
||||
* timeout will vary between the MIN and MAX values defined here. By default
|
||||
* and during console activity we will use a default MIN_TIMEOUT of 10. When
|
||||
* the console is idle, we increase the timeout value on each pass through
|
||||
* msleep until we reach the max. This may be noticeable as a brief (average
|
||||
* one second) delay on the console before the console responds to input when
|
||||
* there has been no input for some time.
|
||||
*/
|
||||
#define MIN_TIMEOUT (10)
|
||||
#define MAX_TIMEOUT (2000)
|
||||
static u32 timeout = MIN_TIMEOUT;
|
||||
|
||||
#define HVC_POLL_READ 0x00000001
|
||||
#define HVC_POLL_WRITE 0x00000002
|
||||
|
||||
@@ -642,9 +652,14 @@ static int hvc_poll(struct hvc_struct *hp)
|
||||
bail:
|
||||
spin_unlock_irqrestore(&hp->lock, flags);
|
||||
|
||||
if (read_total)
|
||||
if (read_total) {
|
||||
/* Activity is occurring, so reset the polling backoff value to
|
||||
a minimum for performance. */
|
||||
timeout = MIN_TIMEOUT;
|
||||
|
||||
tty_flip_buffer_push(tty);
|
||||
|
||||
}
|
||||
|
||||
return poll_mask;
|
||||
}
|
||||
|
||||
@@ -688,8 +703,12 @@ int khvcd(void *unused)
|
||||
if (!hvc_kicked) {
|
||||
if (poll_mask == 0)
|
||||
schedule();
|
||||
else
|
||||
msleep_interruptible(TIMEOUT);
|
||||
else {
|
||||
if (timeout < MAX_TIMEOUT)
|
||||
timeout += (timeout >> 6) + 1;
|
||||
|
||||
msleep_interruptible(timeout);
|
||||
}
|
||||
}
|
||||
__set_current_state(TASK_RUNNING);
|
||||
} while (!kthread_should_stop());
|
||||
@@ -794,7 +813,7 @@ int __devexit hvc_remove(struct hvc_struct *hp)
|
||||
|
||||
/*
|
||||
* We 'put' the instance that was grabbed when the kobject instance
|
||||
* was intialized using kobject_init(). Let the last holder of this
|
||||
* was initialized using kobject_init(). Let the last holder of this
|
||||
* kobject cause it to be removed, which will probably be the tty_hangup
|
||||
* below.
|
||||
*/
|
||||
@@ -850,7 +869,7 @@ int __init hvc_init(void)
|
||||
}
|
||||
module_init(hvc_init);
|
||||
|
||||
/* This isn't particularily necessary due to this being a console driver
|
||||
/* This isn't particularly necessary due to this being a console driver
|
||||
* but it is nice to be thorough.
|
||||
*/
|
||||
static void __exit hvc_exit(void)
|
||||
|
||||
@@ -575,7 +575,7 @@ static int hvc_find_vtys(void)
|
||||
(num_found >= VTTY_PORTS))
|
||||
break;
|
||||
|
||||
vtermno = get_property(vty, "reg", NULL);
|
||||
vtermno = of_get_property(vty, "reg", NULL);
|
||||
if (!vtermno)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ static int hvc_find_vtys(void)
|
||||
if (num_found >= MAX_NR_HVC_CONSOLES)
|
||||
break;
|
||||
|
||||
vtermno = get_property(vty, "reg", NULL);
|
||||
vtermno = of_get_property(vty, "reg", NULL);
|
||||
if (!vtermno)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -1279,8 +1279,8 @@ static int __init hvsi_console_init(void)
|
||||
struct hvsi_struct *hp;
|
||||
const uint32_t *vtermno, *irq;
|
||||
|
||||
vtermno = get_property(vty, "reg", NULL);
|
||||
irq = get_property(vty, "interrupts", NULL);
|
||||
vtermno = of_get_property(vty, "reg", NULL);
|
||||
irq = of_get_property(vty, "interrupts", NULL);
|
||||
if (!vtermno || !irq)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@ static void __iomem * atmel_get_base_addr(unsigned long *base, int *region_size)
|
||||
}
|
||||
|
||||
reg = get_property(dn, "reg", ®len);
|
||||
naddrc = prom_n_addr_cells(dn);
|
||||
nsizec = prom_n_size_cells(dn);
|
||||
naddrc = of_n_addr_cells(dn);
|
||||
nsizec = of_n_size_cells(dn);
|
||||
|
||||
of_node_put(dn);
|
||||
|
||||
|
||||
@@ -548,7 +548,7 @@ config MV64X60_WDT
|
||||
depends on WATCHDOG && MV64X60
|
||||
|
||||
config BOOKE_WDT
|
||||
tristate "PowerPC Book-E Watchdog Timer"
|
||||
bool "PowerPC Book-E Watchdog Timer"
|
||||
depends on WATCHDOG && (BOOKE || 4xx)
|
||||
---help---
|
||||
Please see Documentation/watchdog/watchdog-api.txt for
|
||||
|
||||
@@ -141,10 +141,10 @@ static void ams_worker(struct work_struct *work)
|
||||
int ams_sensor_attach(void)
|
||||
{
|
||||
int result;
|
||||
u32 *prop;
|
||||
const u32 *prop;
|
||||
|
||||
/* Get orientation */
|
||||
prop = (u32*)get_property(ams_info.of_node, "orientation", NULL);
|
||||
prop = get_property(ams_info.of_node, "orientation", NULL);
|
||||
if (!prop)
|
||||
return -ENODEV;
|
||||
ams_info.orient1 = *prop;
|
||||
|
||||
@@ -263,7 +263,7 @@ int __init ams_i2c_init(struct device_node *np)
|
||||
{
|
||||
char *tmp_bus;
|
||||
int result;
|
||||
u32 *prop;
|
||||
const u32 *prop;
|
||||
|
||||
mutex_lock(&ams_info.lock);
|
||||
|
||||
@@ -276,7 +276,7 @@ int __init ams_i2c_init(struct device_node *np)
|
||||
ams_info.bustype = BUS_I2C;
|
||||
|
||||
/* look for bus either using "reg" or by path */
|
||||
prop = (u32*)get_property(ams_info.of_node, "reg", NULL);
|
||||
prop = get_property(ams_info.of_node, "reg", NULL);
|
||||
if (!prop) {
|
||||
result = -ENODEV;
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ static void ams_pmu_exit(void)
|
||||
|
||||
int __init ams_pmu_init(struct device_node *np)
|
||||
{
|
||||
u32 *prop;
|
||||
const u32 *prop;
|
||||
int result;
|
||||
|
||||
mutex_lock(&ams_info.lock);
|
||||
@@ -160,7 +160,7 @@ int __init ams_pmu_init(struct device_node *np)
|
||||
ams_info.bustype = BUS_HOST;
|
||||
|
||||
/* Get PMU command, should be 0x4e, but we can never know */
|
||||
prop = (u32*)get_property(ams_info.of_node, "reg", NULL);
|
||||
prop = get_property(ams_info.of_node, "reg", NULL);
|
||||
if (!prop) {
|
||||
result = -ENODEV;
|
||||
goto exit;
|
||||
|
||||
@@ -565,11 +565,11 @@ static int __devinit ehca_probe(struct ibmebus_dev *dev,
|
||||
const struct of_device_id *id)
|
||||
{
|
||||
struct ehca_shca *shca;
|
||||
u64 *handle;
|
||||
const u64 *handle;
|
||||
struct ib_pd *ibpd;
|
||||
int ret;
|
||||
|
||||
handle = (u64 *)get_property(dev->ofdev.node, "ibm,hca-handle", NULL);
|
||||
handle = get_property(dev->ofdev.node, "ibm,hca-handle", NULL);
|
||||
if (!handle) {
|
||||
ehca_gen_err("Cannot get eHCA handle for adapter: %s.",
|
||||
dev->ofdev.node->full_name);
|
||||
|
||||
@@ -90,7 +90,7 @@ static int autopoll_devs;
|
||||
int __adb_probe_sync;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
|
||||
static void adb_notify_sleep(struct pmu_sleep_notifier *self, int when);
|
||||
static struct pmu_sleep_notifier adb_sleep_notifier = {
|
||||
adb_notify_sleep,
|
||||
SLEEP_LEVEL_ADB,
|
||||
@@ -340,11 +340,9 @@ __initcall(adb_init);
|
||||
/*
|
||||
* notify clients before sleep and reset bus afterwards
|
||||
*/
|
||||
int
|
||||
void
|
||||
adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
|
||||
{
|
||||
int ret;
|
||||
|
||||
switch (when) {
|
||||
case PBOOK_SLEEP_REQUEST:
|
||||
adb_got_sleep = 1;
|
||||
@@ -353,22 +351,8 @@ adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
|
||||
/* Stop autopoll */
|
||||
if (adb_controller->autopoll)
|
||||
adb_controller->autopoll(0);
|
||||
ret = blocking_notifier_call_chain(&adb_client_list,
|
||||
ADB_MSG_POWERDOWN, NULL);
|
||||
if (ret & NOTIFY_STOP_MASK) {
|
||||
up(&adb_probe_mutex);
|
||||
return PBOOK_SLEEP_REFUSE;
|
||||
}
|
||||
break;
|
||||
case PBOOK_SLEEP_REJECT:
|
||||
if (adb_got_sleep) {
|
||||
adb_got_sleep = 0;
|
||||
up(&adb_probe_mutex);
|
||||
adb_reset_bus();
|
||||
}
|
||||
break;
|
||||
|
||||
case PBOOK_SLEEP_NOW:
|
||||
blocking_notifier_call_chain(&adb_client_list,
|
||||
ADB_MSG_POWERDOWN, NULL);
|
||||
break;
|
||||
case PBOOK_WAKE:
|
||||
adb_got_sleep = 0;
|
||||
@@ -376,14 +360,13 @@ adb_notify_sleep(struct pmu_sleep_notifier *self, int when)
|
||||
adb_reset_bus();
|
||||
break;
|
||||
}
|
||||
return PBOOK_SLEEP_OK;
|
||||
}
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
static int
|
||||
do_adb_reset_bus(void)
|
||||
{
|
||||
int ret, nret;
|
||||
int ret;
|
||||
|
||||
if (adb_controller == NULL)
|
||||
return -ENXIO;
|
||||
@@ -391,13 +374,8 @@ do_adb_reset_bus(void)
|
||||
if (adb_controller->autopoll)
|
||||
adb_controller->autopoll(0);
|
||||
|
||||
nret = blocking_notifier_call_chain(&adb_client_list,
|
||||
ADB_MSG_PRE_RESET, NULL);
|
||||
if (nret & NOTIFY_STOP_MASK) {
|
||||
if (adb_controller->autopoll)
|
||||
adb_controller->autopoll(autopoll_devs);
|
||||
return -EBUSY;
|
||||
}
|
||||
blocking_notifier_call_chain(&adb_client_list,
|
||||
ADB_MSG_PRE_RESET, NULL);
|
||||
|
||||
if (sleepy_trackpad) {
|
||||
/* Let the trackpad settle down */
|
||||
@@ -427,10 +405,8 @@ do_adb_reset_bus(void)
|
||||
}
|
||||
up(&adb_handler_sem);
|
||||
|
||||
nret = blocking_notifier_call_chain(&adb_client_list,
|
||||
ADB_MSG_POST_RESET, NULL);
|
||||
if (nret & NOTIFY_STOP_MASK)
|
||||
return -EBUSY;
|
||||
blocking_notifier_call_chain(&adb_client_list,
|
||||
ADB_MSG_POST_RESET, NULL);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -145,11 +145,12 @@ anslcd_init(void)
|
||||
int retval;
|
||||
struct device_node* node;
|
||||
|
||||
node = find_devices("lcd");
|
||||
if (!node || !node->parent)
|
||||
return -ENODEV;
|
||||
if (strcmp(node->parent->name, "gc"))
|
||||
node = of_find_node_by_name(NULL, "lcd");
|
||||
if (!node || !node->parent || strcmp(node->parent->name, "gc")) {
|
||||
of_node_put(node);
|
||||
return -ENODEV;
|
||||
}
|
||||
of_node_put(node);
|
||||
|
||||
anslcd_ptr = ioremap(ANSLCD_ADDR, 0x20);
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
|
||||
static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
|
||||
static struct apm_user * user_list;
|
||||
|
||||
static int apm_notify_sleep(struct pmu_sleep_notifier *self, int when);
|
||||
static void apm_notify_sleep(struct pmu_sleep_notifier *self, int when);
|
||||
static struct pmu_sleep_notifier apm_sleep_notifier = {
|
||||
apm_notify_sleep,
|
||||
SLEEP_LEVEL_USERLAND,
|
||||
@@ -352,7 +352,7 @@ static int do_open(struct inode * inode, struct file * filp)
|
||||
* doesn't provide a way to NAK, but this could be added
|
||||
* here.
|
||||
*/
|
||||
static int wait_all_suspend(void)
|
||||
static void wait_all_suspend(void)
|
||||
{
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
|
||||
@@ -366,24 +366,19 @@ static int wait_all_suspend(void)
|
||||
remove_wait_queue(&apm_suspend_waitqueue, &wait);
|
||||
|
||||
DBG("apm_emu: wait_all_suspend() - complete !\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int apm_notify_sleep(struct pmu_sleep_notifier *self, int when)
|
||||
static void apm_notify_sleep(struct pmu_sleep_notifier *self, int when)
|
||||
{
|
||||
switch(when) {
|
||||
case PBOOK_SLEEP_REQUEST:
|
||||
queue_event(APM_SYS_SUSPEND, NULL);
|
||||
if (!wait_all_suspend())
|
||||
return PBOOK_SLEEP_REFUSE;
|
||||
wait_all_suspend();
|
||||
break;
|
||||
case PBOOK_SLEEP_REJECT:
|
||||
case PBOOK_WAKE:
|
||||
queue_event(APM_NORMAL_RESUME, NULL);
|
||||
break;
|
||||
}
|
||||
return PBOOK_SLEEP_OK;
|
||||
}
|
||||
|
||||
#define APM_CRITICAL 10
|
||||
|
||||
@@ -102,8 +102,6 @@ int mac_hid_mouse_emulate_buttons(int caller, unsigned int keycode, int down)
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(mac_hid_mouse_emulate_buttons);
|
||||
|
||||
static int emumousebtn_input_register(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -82,7 +82,14 @@ struct adb_driver macio_adb_driver = {
|
||||
|
||||
int macio_probe(void)
|
||||
{
|
||||
return find_compatible_devices("adb", "chrp,adb0")? 0: -ENODEV;
|
||||
struct device_node *np;
|
||||
|
||||
np = of_find_compatible_node(NULL, "adb", "chrp,adb0");
|
||||
if (np) {
|
||||
of_node_put(np);
|
||||
return 0;
|
||||
}
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
int macio_init(void)
|
||||
@@ -91,12 +98,14 @@ int macio_init(void)
|
||||
struct resource r;
|
||||
unsigned int irq;
|
||||
|
||||
adbs = find_compatible_devices("adb", "chrp,adb0");
|
||||
adbs = of_find_compatible_node(NULL, "adb", "chrp,adb0");
|
||||
if (adbs == 0)
|
||||
return -ENXIO;
|
||||
|
||||
if (of_address_to_resource(adbs, 0, &r))
|
||||
if (of_address_to_resource(adbs, 0, &r)) {
|
||||
of_node_put(adbs);
|
||||
return -ENXIO;
|
||||
}
|
||||
adb = ioremap(r.start, sizeof(struct adb_regs));
|
||||
|
||||
out_8(&adb->ctrl.r, 0);
|
||||
@@ -107,6 +116,7 @@ int macio_init(void)
|
||||
out_8(&adb->autopoll.r, APE);
|
||||
|
||||
irq = irq_of_parse_and_map(adbs, 0);
|
||||
of_node_put(adbs);
|
||||
if (request_irq(irq, macio_adb_interrupt, 0, "ADB", (void *)0)) {
|
||||
printk(KERN_ERR "ADB: can't get irq %d\n", irq);
|
||||
return -EAGAIN;
|
||||
|
||||
@@ -134,108 +134,12 @@ static int macio_device_resume(struct device * dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int macio_uevent(struct device *dev, char **envp, int num_envp,
|
||||
char *buffer, int buffer_size)
|
||||
{
|
||||
struct macio_dev * macio_dev;
|
||||
struct of_device * of;
|
||||
char *scratch;
|
||||
const char *compat, *compat2;
|
||||
|
||||
int i = 0;
|
||||
int length, cplen, cplen2, seen = 0;
|
||||
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
macio_dev = to_macio_device(dev);
|
||||
if (!macio_dev)
|
||||
return -ENODEV;
|
||||
|
||||
of = &macio_dev->ofdev;
|
||||
|
||||
/* stuff we want to pass to /sbin/hotplug */
|
||||
envp[i++] = scratch = buffer;
|
||||
length = scnprintf (scratch, buffer_size, "OF_NAME=%s", of->node->name);
|
||||
++length;
|
||||
buffer_size -= length;
|
||||
if ((buffer_size <= 0) || (i >= num_envp))
|
||||
return -ENOMEM;
|
||||
scratch += length;
|
||||
|
||||
envp[i++] = scratch;
|
||||
length = scnprintf (scratch, buffer_size, "OF_TYPE=%s", of->node->type);
|
||||
++length;
|
||||
buffer_size -= length;
|
||||
if ((buffer_size <= 0) || (i >= num_envp))
|
||||
return -ENOMEM;
|
||||
scratch += length;
|
||||
|
||||
/* Since the compatible field can contain pretty much anything
|
||||
* it's not really legal to split it out with commas. We split it
|
||||
* up using a number of environment variables instead. */
|
||||
|
||||
compat = get_property(of->node, "compatible", &cplen);
|
||||
compat2 = compat;
|
||||
cplen2= cplen;
|
||||
while (compat && cplen > 0) {
|
||||
envp[i++] = scratch;
|
||||
length = scnprintf (scratch, buffer_size,
|
||||
"OF_COMPATIBLE_%d=%s", seen, compat);
|
||||
++length;
|
||||
buffer_size -= length;
|
||||
if ((buffer_size <= 0) || (i >= num_envp))
|
||||
return -ENOMEM;
|
||||
scratch += length;
|
||||
length = strlen (compat) + 1;
|
||||
compat += length;
|
||||
cplen -= length;
|
||||
seen++;
|
||||
}
|
||||
|
||||
envp[i++] = scratch;
|
||||
length = scnprintf (scratch, buffer_size, "OF_COMPATIBLE_N=%d", seen);
|
||||
++length;
|
||||
buffer_size -= length;
|
||||
if ((buffer_size <= 0) || (i >= num_envp))
|
||||
return -ENOMEM;
|
||||
scratch += length;
|
||||
|
||||
envp[i++] = scratch;
|
||||
length = scnprintf (scratch, buffer_size, "MODALIAS=of:N%sT%s",
|
||||
of->node->name, of->node->type);
|
||||
/* overwrite '\0' */
|
||||
buffer_size -= length;
|
||||
if ((buffer_size <= 0) || (i >= num_envp))
|
||||
return -ENOMEM;
|
||||
scratch += length;
|
||||
|
||||
if (!compat2) {
|
||||
compat2 = "";
|
||||
cplen2 = 1;
|
||||
}
|
||||
while (cplen2 > 0) {
|
||||
length = snprintf (scratch, buffer_size, "C%s", compat2);
|
||||
buffer_size -= length;
|
||||
if (buffer_size <= 0)
|
||||
return -ENOMEM;
|
||||
scratch += length;
|
||||
length = strlen (compat2) + 1;
|
||||
compat2 += length;
|
||||
cplen2 -= length;
|
||||
}
|
||||
|
||||
envp[i] = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern struct device_attribute macio_dev_attrs[];
|
||||
|
||||
struct bus_type macio_bus_type = {
|
||||
.name = "macio",
|
||||
.match = macio_bus_match,
|
||||
.uevent = macio_uevent,
|
||||
.uevent = of_device_uevent,
|
||||
.probe = macio_device_probe,
|
||||
.remove = macio_device_remove,
|
||||
.shutdown = macio_device_shutdown,
|
||||
@@ -491,7 +395,7 @@ static struct macio_dev * macio_add_one_device(struct macio_chip *chip,
|
||||
#endif
|
||||
MAX_NODE_NAME_SIZE, np->name);
|
||||
} else {
|
||||
reg = get_property(np, "reg", NULL);
|
||||
reg = of_get_property(np, "reg", NULL);
|
||||
sprintf(dev->ofdev.dev.bus_id, "%1d.%08x:%.*s",
|
||||
chip->lbus.index,
|
||||
reg ? *reg : 0, MAX_NODE_NAME_SIZE, np->name);
|
||||
|
||||
@@ -21,7 +21,7 @@ compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
|
||||
int length = 0;
|
||||
|
||||
of = &to_macio_device (dev)->ofdev;
|
||||
compat = get_property(of->node, "compatible", &cplen);
|
||||
compat = of_get_property(of->node, "compatible", &cplen);
|
||||
if (!compat) {
|
||||
*buf = '\0';
|
||||
return 0;
|
||||
@@ -47,18 +47,20 @@ static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
|
||||
int length;
|
||||
|
||||
of = &to_macio_device (dev)->ofdev;
|
||||
compat = get_property(of->node, "compatible", &cplen);
|
||||
compat = of_get_property(of->node, "compatible", &cplen);
|
||||
if (!compat) compat = "", cplen = 1;
|
||||
length = sprintf (buf, "of:N%sT%s", of->node->name, of->node->type);
|
||||
buf += length;
|
||||
while (cplen > 0) {
|
||||
int l;
|
||||
length += sprintf (buf, "C%s", compat);
|
||||
buf += length;
|
||||
l = sprintf (buf, "C%s", compat);
|
||||
length += l;
|
||||
buf += l;
|
||||
l = strlen (compat) + 1;
|
||||
compat += l;
|
||||
cplen -= l;
|
||||
}
|
||||
length += sprintf(buf, "\n");
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
@@ -387,7 +387,7 @@ static int __devinit rackmeter_probe(struct macio_dev* mdev,
|
||||
if (strcmp(np->name, "lightshow") == 0)
|
||||
break;
|
||||
if ((strcmp(np->name, "sound") == 0) &&
|
||||
get_property(np, "virtual", NULL) != NULL)
|
||||
of_get_property(np, "virtual", NULL) != NULL)
|
||||
break;
|
||||
}
|
||||
if (np == NULL) {
|
||||
|
||||
@@ -491,7 +491,7 @@ int __init smu_init (void)
|
||||
printk(KERN_ERR "SMU: Can't find doorbell GPIO !\n");
|
||||
goto fail;
|
||||
}
|
||||
data = get_property(smu->db_node, "reg", NULL);
|
||||
data = of_get_property(smu->db_node, "reg", NULL);
|
||||
if (data == NULL) {
|
||||
of_node_put(smu->db_node);
|
||||
smu->db_node = NULL;
|
||||
@@ -512,7 +512,7 @@ int __init smu_init (void)
|
||||
smu->msg_node = of_find_node_by_name(NULL, "smu-interrupt");
|
||||
if (smu->msg_node == NULL)
|
||||
break;
|
||||
data = get_property(smu->msg_node, "reg", NULL);
|
||||
data = of_get_property(smu->msg_node, "reg", NULL);
|
||||
if (data == NULL) {
|
||||
of_node_put(smu->msg_node);
|
||||
smu->msg_node = NULL;
|
||||
@@ -952,7 +952,7 @@ static struct smu_sdbp_header *smu_create_sdb_partition(int id)
|
||||
prop->name = ((char *)prop) + tlen - 18;
|
||||
sprintf(prop->name, "sdb-partition-%02x", id);
|
||||
prop->length = len;
|
||||
prop->value = (unsigned char *)hdr;
|
||||
prop->value = hdr;
|
||||
prop->next = NULL;
|
||||
|
||||
/* Read the datablock */
|
||||
@@ -1004,7 +1004,7 @@ const struct smu_sdbp_header *__smu_get_sdb_partition(int id,
|
||||
} else
|
||||
mutex_lock(&smu_part_access);
|
||||
|
||||
part = get_property(smu->of_node, pname, size);
|
||||
part = of_get_property(smu->of_node, pname, size);
|
||||
if (part == NULL) {
|
||||
DPRINTK("trying to extract from SMU ...\n");
|
||||
part = smu_create_sdb_partition(id);
|
||||
|
||||
@@ -567,13 +567,13 @@ thermostat_init(void)
|
||||
else
|
||||
return -ENODEV;
|
||||
|
||||
prop = get_property(np, "hwsensor-params-version", NULL);
|
||||
prop = of_get_property(np, "hwsensor-params-version", NULL);
|
||||
printk(KERN_INFO "adt746x: version %d (%ssupported)\n", *prop,
|
||||
(*prop == 1)?"":"un");
|
||||
if (*prop != 1)
|
||||
return -ENODEV;
|
||||
|
||||
prop = get_property(np, "reg", NULL);
|
||||
prop = of_get_property(np, "reg", NULL);
|
||||
if (!prop)
|
||||
return -ENODEV;
|
||||
|
||||
@@ -591,9 +591,9 @@ thermostat_init(void)
|
||||
"limit_adjust: %d, fan_speed: %d\n",
|
||||
therm_bus, therm_address, limit_adjust, fan_speed);
|
||||
|
||||
if (get_property(np, "hwsensor-location", NULL)) {
|
||||
if (of_get_property(np, "hwsensor-location", NULL)) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
sensor_location[i] = get_property(np,
|
||||
sensor_location[i] = of_get_property(np,
|
||||
"hwsensor-location", NULL) + offset;
|
||||
|
||||
if (sensor_location[i] == NULL)
|
||||
|
||||
@@ -674,7 +674,7 @@ static int read_eeprom(int cpu, struct mpu_data *out)
|
||||
printk(KERN_ERR "therm_pm72: Failed to retrieve cpuid node from device-tree\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
data = get_property(np, "cpuid", &len);
|
||||
data = of_get_property(np, "cpuid", &len);
|
||||
if (data == NULL) {
|
||||
printk(KERN_ERR "therm_pm72: Failed to retrieve cpuid property from device-tree\n");
|
||||
of_node_put(np);
|
||||
@@ -1337,7 +1337,7 @@ static int init_backside_state(struct backside_pid_state *state)
|
||||
*/
|
||||
u3 = of_find_node_by_path("/u3@0,f8000000");
|
||||
if (u3 != NULL) {
|
||||
const u32 *vers = get_property(u3, "device-rev", NULL);
|
||||
const u32 *vers = of_get_property(u3, "device-rev", NULL);
|
||||
if (vers)
|
||||
if (((*vers) & 0x3f) < 0x34)
|
||||
u3h = 0;
|
||||
@@ -2129,8 +2129,8 @@ static void fcu_lookup_fans(struct device_node *fcu_node)
|
||||
continue;
|
||||
|
||||
/* Lookup for a matching location */
|
||||
loc = get_property(np, "location", NULL);
|
||||
reg = get_property(np, "reg", NULL);
|
||||
loc = of_get_property(np, "location", NULL);
|
||||
reg = of_get_property(np, "reg", NULL);
|
||||
if (loc == NULL || reg == NULL)
|
||||
continue;
|
||||
DBG(" matching location: %s, reg: 0x%08x\n", loc, *reg);
|
||||
|
||||
@@ -492,7 +492,7 @@ g4fan_init( void )
|
||||
|
||||
if( !(np=of_find_node_by_name(NULL, "power-mgt")) )
|
||||
return -ENODEV;
|
||||
info = get_property(np, "thermal-info", NULL);
|
||||
info = of_get_property(np, "thermal-info", NULL);
|
||||
of_node_put(np);
|
||||
|
||||
if( !info || !machine_is_compatible("PowerMac3,6") )
|
||||
|
||||
@@ -131,7 +131,7 @@ int __init find_via_cuda(void)
|
||||
if (vias == 0)
|
||||
return 0;
|
||||
|
||||
reg = get_property(vias, "reg", NULL);
|
||||
reg = of_get_property(vias, "reg", NULL);
|
||||
if (reg == NULL) {
|
||||
printk(KERN_ERR "via-cuda: No \"reg\" property !\n");
|
||||
goto fail;
|
||||
|
||||
@@ -81,7 +81,7 @@ static struct led_classdev pmu_led = {
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int pmu_led_sleep_call(struct pmu_sleep_notifier *self, int when)
|
||||
static void pmu_led_sleep_call(struct pmu_sleep_notifier *self, int when)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
@@ -99,8 +99,6 @@ static int pmu_led_sleep_call(struct pmu_sleep_notifier *self, int when)
|
||||
break;
|
||||
}
|
||||
spin_unlock_irqrestore(&pmu_blink_lock, flags);
|
||||
|
||||
return PBOOK_SLEEP_OK;
|
||||
}
|
||||
|
||||
static struct pmu_sleep_notifier via_pmu_led_sleep_notif = {
|
||||
@@ -120,11 +118,13 @@ static int __init via_pmu_led_init(void)
|
||||
dt = of_find_node_by_path("/");
|
||||
if (dt == NULL)
|
||||
return -ENODEV;
|
||||
model = get_property(dt, "model", NULL);
|
||||
model = of_get_property(dt, "model", NULL);
|
||||
if (model == NULL)
|
||||
return -ENODEV;
|
||||
if (strncmp(model, "PowerBook", strlen("PowerBook")) != 0 &&
|
||||
strncmp(model, "iBook", strlen("iBook")) != 0) {
|
||||
strncmp(model, "iBook", strlen("iBook")) != 0 &&
|
||||
strcmp(model, "PowerMac7,2") != 0 &&
|
||||
strcmp(model, "PowerMac7,3") != 0) {
|
||||
of_node_put(dt);
|
||||
/* ignore */
|
||||
return -ENODEV;
|
||||
|
||||
@@ -289,7 +289,7 @@ int __init find_via_pmu(void)
|
||||
if (vias == NULL)
|
||||
return 0;
|
||||
|
||||
reg = get_property(vias, "reg", NULL);
|
||||
reg = of_get_property(vias, "reg", NULL);
|
||||
if (reg == NULL) {
|
||||
printk(KERN_ERR "via-pmu: No \"reg\" property !\n");
|
||||
goto fail;
|
||||
@@ -319,10 +319,13 @@ int __init find_via_pmu(void)
|
||||
else if (device_is_compatible(vias->parent, "Keylargo")
|
||||
|| device_is_compatible(vias->parent, "K2-Keylargo")) {
|
||||
struct device_node *gpiop;
|
||||
struct device_node *adbp;
|
||||
u64 gaddr = OF_BAD_ADDR;
|
||||
|
||||
pmu_kind = PMU_KEYLARGO_BASED;
|
||||
pmu_has_adb = (find_type_devices("adb") != NULL);
|
||||
adbp = of_find_node_by_type(NULL, "adb");
|
||||
pmu_has_adb = (adbp != NULL);
|
||||
of_node_put(adbp);
|
||||
pmu_intr_mask = PMU_INT_PCEJECT |
|
||||
PMU_INT_SNDBRT |
|
||||
PMU_INT_ADB |
|
||||
@@ -331,7 +334,7 @@ int __init find_via_pmu(void)
|
||||
|
||||
gpiop = of_find_node_by_name(NULL, "gpio");
|
||||
if (gpiop) {
|
||||
reg = get_property(gpiop, "reg", NULL);
|
||||
reg = of_get_property(gpiop, "reg", NULL);
|
||||
if (reg)
|
||||
gaddr = of_translate_address(gpiop, reg);
|
||||
if (gaddr != OF_BAD_ADDR)
|
||||
@@ -484,10 +487,11 @@ static int __init via_pmu_dev_init(void)
|
||||
pmu_batteries[0].flags |= PMU_BATT_TYPE_SMART;
|
||||
pmu_batteries[1].flags |= PMU_BATT_TYPE_SMART;
|
||||
} else {
|
||||
struct device_node* prim = find_devices("power-mgt");
|
||||
struct device_node* prim =
|
||||
of_find_node_by_name(NULL, "power-mgt");
|
||||
const u32 *prim_info = NULL;
|
||||
if (prim)
|
||||
prim_info = get_property(prim, "prim-info", NULL);
|
||||
prim_info = of_get_property(prim, "prim-info", NULL);
|
||||
if (prim_info) {
|
||||
/* Other stuffs here yet unknown */
|
||||
pmu_battery_count = (prim_info[6] >> 16) & 0xff;
|
||||
@@ -495,6 +499,7 @@ static int __init via_pmu_dev_init(void)
|
||||
if (pmu_battery_count > 1)
|
||||
pmu_batteries[1].flags |= PMU_BATT_TYPE_SMART;
|
||||
}
|
||||
of_node_put(prim);
|
||||
}
|
||||
#endif /* CONFIG_PPC32 */
|
||||
|
||||
@@ -1769,35 +1774,21 @@ EXPORT_SYMBOL(pmu_unregister_sleep_notifier);
|
||||
#if defined(CONFIG_PM) && defined(CONFIG_PPC32)
|
||||
|
||||
/* Sleep is broadcast last-to-first */
|
||||
static int
|
||||
broadcast_sleep(int when, int fallback)
|
||||
static void broadcast_sleep(int when)
|
||||
{
|
||||
int ret = PBOOK_SLEEP_OK;
|
||||
struct list_head *list;
|
||||
struct pmu_sleep_notifier *notifier;
|
||||
|
||||
for (list = sleep_notifiers.prev; list != &sleep_notifiers;
|
||||
list = list->prev) {
|
||||
notifier = list_entry(list, struct pmu_sleep_notifier, list);
|
||||
ret = notifier->notifier_call(notifier, when);
|
||||
if (ret != PBOOK_SLEEP_OK) {
|
||||
printk(KERN_DEBUG "sleep %d rejected by %p (%p)\n",
|
||||
when, notifier, notifier->notifier_call);
|
||||
for (; list != &sleep_notifiers; list = list->next) {
|
||||
notifier = list_entry(list, struct pmu_sleep_notifier, list);
|
||||
notifier->notifier_call(notifier, fallback);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
notifier->notifier_call(notifier, when);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Wake is broadcast first-to-last */
|
||||
static int
|
||||
broadcast_wake(void)
|
||||
static void broadcast_wake(void)
|
||||
{
|
||||
int ret = PBOOK_SLEEP_OK;
|
||||
struct list_head *list;
|
||||
struct pmu_sleep_notifier *notifier;
|
||||
|
||||
@@ -1806,7 +1797,6 @@ broadcast_wake(void)
|
||||
notifier = list_entry(list, struct pmu_sleep_notifier, list);
|
||||
notifier->notifier_call(notifier, PBOOK_WAKE);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2013,12 +2003,8 @@ pmac_suspend_devices(void)
|
||||
|
||||
pm_prepare_console();
|
||||
|
||||
/* Notify old-style device drivers & userland */
|
||||
ret = broadcast_sleep(PBOOK_SLEEP_REQUEST, PBOOK_SLEEP_REJECT);
|
||||
if (ret != PBOOK_SLEEP_OK) {
|
||||
printk(KERN_ERR "Sleep rejected by drivers\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
/* Notify old-style device drivers */
|
||||
broadcast_sleep(PBOOK_SLEEP_REQUEST);
|
||||
|
||||
/* Sync the disks. */
|
||||
/* XXX It would be nice to have some way to ensure that
|
||||
@@ -2028,12 +2014,7 @@ pmac_suspend_devices(void)
|
||||
*/
|
||||
sys_sync();
|
||||
|
||||
/* Sleep can fail now. May not be very robust but useful for debugging */
|
||||
ret = broadcast_sleep(PBOOK_SLEEP_NOW, PBOOK_WAKE);
|
||||
if (ret != PBOOK_SLEEP_OK) {
|
||||
printk(KERN_ERR "Driver sleep failed\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
broadcast_sleep(PBOOK_SLEEP_NOW);
|
||||
|
||||
/* Send suspend call to devices, hold the device core's dpm_sem */
|
||||
ret = device_suspend(PMSG_SUSPEND);
|
||||
@@ -2154,7 +2135,7 @@ static int powerbook_sleep_grackle(void)
|
||||
int ret;
|
||||
struct pci_dev *grackle;
|
||||
|
||||
grackle = pci_find_slot(0, 0);
|
||||
grackle = pci_get_bus_and_slot(0, 0);
|
||||
if (!grackle)
|
||||
return -ENODEV;
|
||||
|
||||
@@ -2202,6 +2183,8 @@ static int powerbook_sleep_grackle(void)
|
||||
pmcr1 &= ~(GRACKLE_PM|GRACKLE_DOZE|GRACKLE_SLEEP|GRACKLE_NAP);
|
||||
pci_write_config_word(grackle, 0x70, pmcr1);
|
||||
|
||||
pci_dev_put(grackle);
|
||||
|
||||
/* Make sure the PMU is idle */
|
||||
pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,0);
|
||||
restore_via_state();
|
||||
|
||||
@@ -176,7 +176,7 @@ static int wf_lm75_attach(struct i2c_adapter *adapter)
|
||||
for (dev = NULL;
|
||||
(dev = of_get_next_child(busnode, dev)) != NULL;) {
|
||||
const char *loc =
|
||||
get_property(dev, "hwsensor-location", NULL);
|
||||
of_get_property(dev, "hwsensor-location", NULL);
|
||||
u8 addr;
|
||||
|
||||
/* We must re-match the adapter in order to properly check
|
||||
|
||||
@@ -134,7 +134,7 @@ static int wf_max6690_attach(struct i2c_adapter *adapter)
|
||||
if (!device_is_compatible(dev, "max6690"))
|
||||
continue;
|
||||
addr = pmac_i2c_get_dev_addr(dev);
|
||||
loc = get_property(dev, "hwsensor-location", NULL);
|
||||
loc = of_get_property(dev, "hwsensor-location", NULL);
|
||||
if (loc == NULL || addr == 0)
|
||||
continue;
|
||||
printk("found max6690, loc=%s addr=0x%02x\n", loc, addr);
|
||||
|
||||
@@ -167,7 +167,7 @@ static struct smu_fan_control *smu_fan_create(struct device_node *node,
|
||||
if (fct == NULL)
|
||||
return NULL;
|
||||
fct->ctrl.ops = &smu_fan_ops;
|
||||
l = get_property(node, "location", NULL);
|
||||
l = of_get_property(node, "location", NULL);
|
||||
if (l == NULL)
|
||||
goto fail;
|
||||
|
||||
@@ -224,17 +224,17 @@ static struct smu_fan_control *smu_fan_create(struct device_node *node,
|
||||
goto fail;
|
||||
|
||||
/* Get min & max values*/
|
||||
v = get_property(node, "min-value", NULL);
|
||||
v = of_get_property(node, "min-value", NULL);
|
||||
if (v == NULL)
|
||||
goto fail;
|
||||
fct->min = *v;
|
||||
v = get_property(node, "max-value", NULL);
|
||||
v = of_get_property(node, "max-value", NULL);
|
||||
if (v == NULL)
|
||||
goto fail;
|
||||
fct->max = *v;
|
||||
|
||||
/* Get "reg" value */
|
||||
reg = get_property(node, "reg", NULL);
|
||||
reg = of_get_property(node, "reg", NULL);
|
||||
if (reg == NULL)
|
||||
goto fail;
|
||||
fct->reg = *reg;
|
||||
|
||||
@@ -241,7 +241,7 @@ static void wf_sat_create(struct i2c_adapter *adapter, struct device_node *dev)
|
||||
char *name;
|
||||
int vsens[2], isens[2];
|
||||
|
||||
reg = get_property(dev, "reg", NULL);
|
||||
reg = of_get_property(dev, "reg", NULL);
|
||||
if (reg == NULL)
|
||||
return;
|
||||
addr = *reg;
|
||||
@@ -268,9 +268,9 @@ static void wf_sat_create(struct i2c_adapter *adapter, struct device_node *dev)
|
||||
isens[0] = isens[1] = -1;
|
||||
child = NULL;
|
||||
while ((child = of_get_next_child(dev, child)) != NULL) {
|
||||
reg = get_property(child, "reg", NULL);
|
||||
type = get_property(child, "device_type", NULL);
|
||||
loc = get_property(child, "location", NULL);
|
||||
reg = of_get_property(child, "reg", NULL);
|
||||
type = of_get_property(child, "device_type", NULL);
|
||||
loc = of_get_property(child, "location", NULL);
|
||||
if (reg == NULL || loc == NULL)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -204,8 +204,8 @@ static struct smu_ad_sensor *smu_ads_create(struct device_node *node)
|
||||
ads = kmalloc(sizeof(struct smu_ad_sensor), GFP_KERNEL);
|
||||
if (ads == NULL)
|
||||
return NULL;
|
||||
c = get_property(node, "device_type", NULL);
|
||||
l = get_property(node, "location", NULL);
|
||||
c = of_get_property(node, "device_type", NULL);
|
||||
l = of_get_property(node, "location", NULL);
|
||||
if (c == NULL || l == NULL)
|
||||
goto fail;
|
||||
|
||||
@@ -255,7 +255,7 @@ static struct smu_ad_sensor *smu_ads_create(struct device_node *node)
|
||||
} else
|
||||
goto fail;
|
||||
|
||||
v = get_property(node, "reg", NULL);
|
||||
v = of_get_property(node, "reg", NULL);
|
||||
if (v == NULL)
|
||||
goto fail;
|
||||
ads->reg = *v;
|
||||
|
||||
@@ -2160,7 +2160,7 @@ static int find_planb(void)
|
||||
if (!machine_is(powermac))
|
||||
return 0;
|
||||
|
||||
planb_devices = find_devices("planb");
|
||||
planb_devices = of_find_node_by_name(NULL, "planb");
|
||||
if (planb_devices == 0) {
|
||||
planb_num=0;
|
||||
printk(KERN_WARNING "PlanB: no device found!\n");
|
||||
@@ -2175,12 +2175,14 @@ static int find_planb(void)
|
||||
if (planb_devices->n_addrs != 1) {
|
||||
printk (KERN_WARNING "PlanB: expecting 1 address for planb "
|
||||
"(got %d)", planb_devices->n_addrs);
|
||||
of_node_put(planb_devices);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (planb_devices->n_intrs == 0) {
|
||||
printk(KERN_WARNING "PlanB: no intrs for device %s\n",
|
||||
planb_devices->full_name);
|
||||
of_node_put(planb_devices);
|
||||
return 0;
|
||||
} else {
|
||||
irq = planb_devices->intrs[0].line;
|
||||
@@ -2202,6 +2204,7 @@ static int find_planb(void)
|
||||
confreg = planb_devices->addrs[0].space & 0xff;
|
||||
old_base = planb_devices->addrs[0].address;
|
||||
new_base = 0xf1000000;
|
||||
of_node_put(planb_devices);
|
||||
|
||||
DEBUG("PlanB: Found on bus %d, dev %d, func %d, "
|
||||
"membase 0x%x (base reg. 0x%x)\n",
|
||||
|
||||
@@ -2274,11 +2274,12 @@ config GFAR_NAPI
|
||||
depends on GIANFAR
|
||||
|
||||
config UCC_GETH
|
||||
tristate "Freescale QE UCC GETH"
|
||||
depends on QUICC_ENGINE && UCC_FAST
|
||||
tristate "Freescale QE Gigabit Ethernet"
|
||||
depends on QUICC_ENGINE
|
||||
select UCC_FAST
|
||||
help
|
||||
This driver supports the Gigabit Ethernet mode of QE UCC.
|
||||
QE can be found on MPC836x CPUs.
|
||||
This driver supports the Gigabit Ethernet mode of the QUICC Engine,
|
||||
which is available on some Freescale SOCs.
|
||||
|
||||
config UGETH_NAPI
|
||||
bool "NAPI Support"
|
||||
|
||||
@@ -82,14 +82,6 @@ struct ports_bmp {
|
||||
u64 unused[3];
|
||||
} __attribute__ ((aligned (32)));
|
||||
|
||||
/* redefine dev_dbg to do a syntax check */
|
||||
|
||||
#if !defined(DEBUG)
|
||||
#undef dev_dbg
|
||||
static inline int __attribute__ ((format (printf, 2, 3))) dev_dbg(
|
||||
const struct device *_dev, const char *fmt, ...) {return 0;}
|
||||
#endif
|
||||
|
||||
#define dump_ports_bmp(_b) _dump_ports_bmp(_b, __func__, __LINE__)
|
||||
static void __attribute__ ((unused)) _dump_ports_bmp(
|
||||
const struct ports_bmp* bmp, const char* func, int line)
|
||||
|
||||
@@ -897,9 +897,9 @@ static int get_system_info(void)
|
||||
{
|
||||
struct device_node *rootdn;
|
||||
const char *id, *model, *name;
|
||||
unsigned int *num;
|
||||
const unsigned int *num;
|
||||
|
||||
rootdn = find_path_device("/");
|
||||
rootdn = of_find_node_by_path("/");
|
||||
if (!rootdn)
|
||||
return -ENOENT;
|
||||
|
||||
@@ -912,10 +912,11 @@ static int get_system_info(void)
|
||||
if (name)
|
||||
strncpy(partition_name, name, sizeof(partition_name));
|
||||
|
||||
num = (unsigned int *) get_property(rootdn, "ibm,partition-no", NULL);
|
||||
num = get_property(rootdn, "ibm,partition-no", NULL);
|
||||
if (num)
|
||||
partition_number = *num;
|
||||
|
||||
of_node_put(rootdn);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ static void gather_partition_info(void)
|
||||
const unsigned int *p_number_ptr;
|
||||
|
||||
/* Retrieve information about this partition */
|
||||
rootdn = find_path_device("/");
|
||||
rootdn = of_find_node_by_path("/");
|
||||
if (!rootdn) {
|
||||
return;
|
||||
}
|
||||
@@ -169,6 +169,7 @@ static void gather_partition_info(void)
|
||||
p_number_ptr = get_property(rootdn, "ibm,partition-no", NULL);
|
||||
if (p_number_ptr)
|
||||
partition_number = *p_number_ptr;
|
||||
of_node_put(rootdn);
|
||||
}
|
||||
|
||||
static void set_adapter_info(struct ibmvscsi_host_data *hostdata)
|
||||
|
||||
@@ -1467,7 +1467,8 @@ static int __init pmz_init_port(struct uart_pmac_port *uap)
|
||||
if (ZS_IS_IRDA(uap))
|
||||
uap->port_type = PMAC_SCC_IRDA;
|
||||
if (ZS_IS_INTMODEM(uap)) {
|
||||
struct device_node* i2c_modem = find_devices("i2c-modem");
|
||||
struct device_node* i2c_modem =
|
||||
of_find_node_by_name(NULL, "i2c-modem");
|
||||
if (i2c_modem) {
|
||||
const char* mid =
|
||||
get_property(i2c_modem, "modem-id", NULL);
|
||||
@@ -1482,6 +1483,7 @@ static int __init pmz_init_port(struct uart_pmac_port *uap)
|
||||
}
|
||||
printk(KERN_INFO "pmac_zilog: i2c-modem detected, id: %d\n",
|
||||
mid ? (*mid) : 0);
|
||||
of_node_put(i2c_modem);
|
||||
} else {
|
||||
printk(KERN_INFO "pmac_zilog: serial modem detected\n");
|
||||
}
|
||||
|
||||
@@ -396,7 +396,7 @@ config FB_ATARI
|
||||
|
||||
config FB_OF
|
||||
bool "Open Firmware frame buffer device support"
|
||||
depends on (FB = y) && (PPC64 || PPC_OF)
|
||||
depends on (FB = y) && (PPC64 || PPC_OF) && (!PPC_PSERIES || PCI)
|
||||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
|
||||
@@ -1262,7 +1262,7 @@ static void radeon_pm_full_reset_sdram(struct radeonfb_info *rinfo)
|
||||
/* This is the code for the Aluminium PowerBooks M10 / iBooks M11 */
|
||||
if (rinfo->family == CHIP_FAMILY_RV350) {
|
||||
u32 sdram_mode_reg = rinfo->save_regs[35];
|
||||
static u32 default_mrtable[] =
|
||||
static const u32 default_mrtable[] =
|
||||
{ 0x21320032,
|
||||
0x21321000, 0xa1321000, 0x21321000, 0xffffffff,
|
||||
0x21320032, 0xa1320032, 0x21320032, 0xffffffff,
|
||||
|
||||
@@ -179,12 +179,14 @@ MODULE_LICENSE("GPL");
|
||||
int init_module(void)
|
||||
{
|
||||
struct device_node *dp;
|
||||
int ret = -ENXIO;
|
||||
|
||||
dp = find_devices("control");
|
||||
dp = of_find_node_by_name(NULL, "control");
|
||||
if (dp != 0 && !control_of_init(dp))
|
||||
return 0;
|
||||
ret = 0;
|
||||
of_node_put(dp);
|
||||
|
||||
return -ENXIO;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void cleanup_module(void)
|
||||
@@ -589,16 +591,18 @@ static int __init control_init(void)
|
||||
{
|
||||
struct device_node *dp;
|
||||
char *option = NULL;
|
||||
int ret = -ENXIO;
|
||||
|
||||
if (fb_get_options("controlfb", &option))
|
||||
return -ENODEV;
|
||||
control_setup(option);
|
||||
|
||||
dp = find_devices("control");
|
||||
dp = of_find_node_by_name(NULL, "control");
|
||||
if (dp != 0 && !control_of_init(dp))
|
||||
return 0;
|
||||
ret = 0;
|
||||
of_node_put(dp);
|
||||
|
||||
return -ENXIO;
|
||||
return ret;
|
||||
}
|
||||
|
||||
module_init(control_init);
|
||||
|
||||
Reference in New Issue
Block a user