* [RFC] PMU: replace information ioctls and schedule for removal
From: Johannes Berg @ 2007-11-08 12:02 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev list
This patch adds sysfs attributes to the PMU to allow getting
the information on the PMU type and whether adb is present from
there instead of via the ioctl. The ioctl is made optional and
scheduled for removal.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
Documentation/feature-removal-schedule.txt | 8 ++++++
drivers/macintosh/Kconfig | 11 ++++++++
drivers/macintosh/via-pmu.c | 36 +++++++++++++++++++++++++++++
3 files changed, 55 insertions(+)
--- everything.orig/drivers/macintosh/via-pmu.c 2007-11-08 11:48:48.292846681 +0100
+++ everything/drivers/macintosh/via-pmu.c 2007-11-08 11:48:53.112861818 +0100
@@ -2533,10 +2533,12 @@ pmu_ioctl(struct inode * inode, struct f
#endif /* CONFIG_INPUT_ADBHID */
#endif /* CONFIG_PMAC_BACKLIGHT_LEGACY */
+#ifdef CONFIG_DEPRECATED_PMU_INFO_IOCTLS
case PMU_IOC_GET_MODEL:
return put_user(pmu_kind, argp);
case PMU_IOC_HAS_ADB:
return put_user(pmu_has_adb, argp);
+#endif
}
return error;
}
@@ -2680,6 +2682,39 @@ static int pmu_sys_resume(struct sys_dev
#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+static ssize_t show_kind(struct sys_device *sysdev, char *buf)
+{
+ return sprintf(buf, "%d\n", pmu_kind);
+}
+
+static ssize_t show_has_adb(struct sys_device *sysdev, char *buf)
+{
+ return sprintf(buf, "%d\n", pmu_has_adb);
+}
+
+static SYSDEV_ATTR(kind, 0444, show_kind, NULL);
+static SYSDEV_ATTR(has_adb, 0444, show_has_adb, NULL);
+
+int pmu_sys_add(struct sys_device *sysdev)
+{
+ int err;
+
+ err = sysdev_create_file(sysdev, &attr_kind);
+ if (err)
+ goto out;
+
+ err = sysdev_create_file(sysdev, &attr_has_adb);
+ if (err)
+ goto out_remove_kind;
+
+ return 0;
+
+ out_remove_kind:
+ sysdev_remove_file(sysdev, &attr_kind);
+ out:
+ return err;
+}
+
static struct sysdev_class pmu_sysclass = {
set_kset_name("pmu"),
};
@@ -2693,6 +2728,7 @@ static struct sysdev_driver driver_pmu =
.suspend = &pmu_sys_suspend,
.resume = &pmu_sys_resume,
#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+ .add = &pmu_sys_add,
};
static int __init init_pmu_sysfs(void)
--- everything.orig/Documentation/feature-removal-schedule.txt 2007-11-08 11:47:39.502844564 +0100
+++ everything/Documentation/feature-removal-schedule.txt 2007-11-08 11:48:53.122870607 +0100
@@ -342,3 +342,11 @@ Why: This driver has been marked obsolet
Who: Stephen Hemminger <shemminger@linux-foundation.org>
---------------------------
+
+What: /dev/pmu information ioctls
+When: January 2010
+Files: drivers/macintosh/via-pmu.c
+Why: The PMU information can be obtained from sysfs now.
+Who: Johannes Berg <johannes@sipsolutions.net>
+
+---------------------------
--- everything.orig/drivers/macintosh/Kconfig 2007-11-08 11:47:39.422844727 +0100
+++ everything/drivers/macintosh/Kconfig 2007-11-08 11:48:53.122870607 +0100
@@ -87,6 +87,17 @@ config ADB_PMU
this device; you should do so if your machine is one of those
mentioned above.
+config DEPRECATED_PMU_INFO_IOCTLS
+ bool "Support deprecated PMU information ioctl"
+ depends on ADB_PMU
+ default y
+ help
+ The PMU ioctl supports getting information on the type of PMU and
+ whether an ADB is present. This information is also available in
+ sysfs so this ioctl is no longer needed.
+
+ If in doubt, say Y even if you will not use the ioctl.
+
config ADB_PMU_LED
bool "Support for the Power/iBook front LED"
depends on ADB_PMU
^ permalink raw reply
* [RFC] powermac: proper sleep management
From: Johannes Berg @ 2007-11-08 12:08 UTC (permalink / raw)
To: linuxppc-dev list; +Cc: linux-pm, David Woodhouse, Paul Mackerras
This adds platform_suspend_ops for PMU based machines, directly in
the PMU driver. This finally allows suspending via /sys/power/state
on powerbooks.
The patch also replaces the PMU ioctl with a simple call to
pm_suspend(PM_SUSPEND_MEM) and puts the sleep-related PMU ioctls onto
the feature-removal schedule, to be removed in early 2010 (just
over two years from now).
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
Just thought I'd send out the patch again, it has changed quite a bit
since last time because I cleaned up the code, made it depend on
CONFIG_SUSPEND, made the ioctl backward compatibility optional and some
other bits.
The feared freezer vs. fuse sync deadlock is no longer present in 2.6.24
because the sync is done before the freezer so maybe the patch stands a
chance now.
Scott: FYI, here's the use case for the ppc_md irq suspend/resume hooks.
Documentation/feature-removal-schedule.txt | 10
drivers/macintosh/Kconfig | 12
drivers/macintosh/via-pmu.c | 511 ++++++++++-------------------
3 files changed, 207 insertions(+), 326 deletions(-)
--- everything.orig/drivers/macintosh/via-pmu.c 2007-11-08 11:48:53.112861818 +0100
+++ everything/drivers/macintosh/via-pmu.c 2007-11-08 11:49:21.592846626 +0100
@@ -10,13 +10,13 @@
*
* Copyright (C) 1998 Paul Mackerras and Fabio Riccardi.
* Copyright (C) 2001-2002 Benjamin Herrenschmidt
+ * Copyright (C) 2006-2007 Johannes Berg
*
* THIS DRIVER IS BECOMING A TOTAL MESS !
* - Cleanup atomically disabling reply to PMU events after
* a sleep or a freq. switch
- * - Move sleep code out of here to pmac_pm, merge into new
- * common PM infrastructure
- * - Save/Restore PCI space properly
+ * - check if powerbook 3400 really needs the extra PCI
+ * save/restore code we have
*
*/
#include <stdarg.h>
@@ -63,9 +63,6 @@
#include "via-pmu-event.h"
-/* Some compile options */
-#define DEBUG_SLEEP
-
/* Misc minor number allocated for /dev/pmu */
#define PMU_MINOR 154
@@ -149,12 +146,9 @@ static spinlock_t pmu_lock;
static u8 pmu_intr_mask;
static int pmu_version;
static int drop_interrupts;
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
static int option_lid_wakeup = 1;
-#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
-#if (defined(CONFIG_PM_SLEEP)&&defined(CONFIG_PPC32))||defined(CONFIG_PMAC_BACKLIGHT_LEGACY)
-static int sleep_in_progress;
-#endif
+#endif /* CONFIG_SUSPEND && CONFIG_PPC32 */
static unsigned long async_req_locks;
static unsigned int pmu_irq_stats[11];
@@ -218,11 +212,6 @@ extern void low_sleep_handler(void);
extern void enable_kernel_altivec(void);
extern void enable_kernel_fp(void);
-#ifdef DEBUG_SLEEP
-int pmu_polled_request(struct adb_request *req);
-int pmu_wink(struct adb_request *req);
-#endif
-
/*
* This table indicates for each PMU opcode:
* - the number of data bytes to be sent with the command, or -1
@@ -871,7 +860,7 @@ proc_read_options(char *page, char **sta
{
char *p = page;
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
if (pmu_kind == PMU_KEYLARGO_BASED &&
pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
p += sprintf(p, "lid_wakeup=%d\n", option_lid_wakeup);
@@ -912,7 +901,7 @@ proc_write_options(struct file *file, co
*(val++) = 0;
while(*val == ' ')
val++;
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
if (pmu_kind == PMU_KEYLARGO_BASED &&
pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) >= 0)
if (!strcmp(label, "lid_wakeup"))
@@ -1718,7 +1707,7 @@ pmu_present(void)
return via != 0;
}
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
/*
* This struct is used to store config register values for
* PCI devices which may get powered off when we sleep.
@@ -1821,43 +1810,6 @@ pbook_pci_restore(void)
}
}
-#ifdef DEBUG_SLEEP
-/* N.B. This doesn't work on the 3400 */
-void
-pmu_blink(int n)
-{
- struct adb_request req;
-
- memset(&req, 0, sizeof(req));
-
- for (; n > 0; --n) {
- req.nbytes = 4;
- req.done = NULL;
- req.data[0] = 0xee;
- req.data[1] = 4;
- req.data[2] = 0;
- req.data[3] = 1;
- req.reply[0] = ADB_RET_OK;
- req.reply_len = 1;
- req.reply_expected = 0;
- pmu_polled_request(&req);
- mdelay(50);
- req.nbytes = 4;
- req.done = NULL;
- req.data[0] = 0xee;
- req.data[1] = 4;
- req.data[2] = 0;
- req.data[3] = 0;
- req.reply[0] = ADB_RET_OK;
- req.reply_len = 1;
- req.reply_expected = 0;
- pmu_polled_request(&req);
- mdelay(50);
- }
- mdelay(50);
-}
-#endif
-
/*
* Put the powerbook to sleep.
*/
@@ -1894,122 +1846,6 @@ restore_via_state(void)
extern void pmu_backlight_set_sleep(int sleep);
-static int
-pmac_suspend_devices(void)
-{
- int ret;
-
- pm_prepare_console();
-
- /* Sync the disks. */
- /* XXX It would be nice to have some way to ensure that
- * nobody is dirtying any new buffers while we wait. That
- * could be achieved using the refrigerator for processes
- * that swsusp uses
- */
- sys_sync();
-
- /* Send suspend call to devices, hold the device core's dpm_sem */
- ret = device_suspend(PMSG_SUSPEND);
- if (ret) {
- printk(KERN_ERR "Driver sleep failed\n");
- return -EBUSY;
- }
-
-#ifdef CONFIG_PMAC_BACKLIGHT
- /* Tell backlight code not to muck around with the chip anymore */
- pmu_backlight_set_sleep(1);
-#endif
-
- /* Call platform functions marked "on sleep" */
- pmac_pfunc_i2c_suspend();
- pmac_pfunc_base_suspend();
-
- /* Stop preemption */
- preempt_disable();
-
- /* Make sure the decrementer won't interrupt us */
- asm volatile("mtdec %0" : : "r" (0x7fffffff));
- /* Make sure any pending DEC interrupt occurring while we did
- * the above didn't re-enable the DEC */
- mb();
- asm volatile("mtdec %0" : : "r" (0x7fffffff));
-
- /* We can now disable MSR_EE. This code of course works properly only
- * on UP machines... For SMP, if we ever implement sleep, we'll have to
- * stop the "other" CPUs way before we do all that stuff.
- */
- local_irq_disable();
-
- /* Broadcast power down irq
- * This isn't that useful in most cases (only directly wired devices can
- * use this but still... This will take care of sysdev's as well, so
- * we exit from here with local irqs disabled and PIC off.
- */
- ret = device_power_down(PMSG_SUSPEND);
- if (ret) {
- wakeup_decrementer();
- local_irq_enable();
- preempt_enable();
- device_resume();
- printk(KERN_ERR "Driver powerdown failed\n");
- return -EBUSY;
- }
-
- /* Wait for completion of async requests */
- while (!batt_req.complete)
- pmu_poll();
-
- /* Giveup the lazy FPU & vec so we don't have to back them
- * up from the low level code
- */
- enable_kernel_fp();
-
-#ifdef CONFIG_ALTIVEC
- if (cpu_has_feature(CPU_FTR_ALTIVEC))
- enable_kernel_altivec();
-#endif /* CONFIG_ALTIVEC */
-
- return 0;
-}
-
-static int
-pmac_wakeup_devices(void)
-{
- mdelay(100);
-
-#ifdef CONFIG_PMAC_BACKLIGHT
- /* Tell backlight code it can use the chip again */
- pmu_backlight_set_sleep(0);
-#endif
-
- /* Power back up system devices (including the PIC) */
- device_power_up();
-
- /* Force a poll of ADB interrupts */
- adb_int_pending = 1;
- via_pmu_interrupt(0, NULL);
-
- /* Restart jiffies & scheduling */
- wakeup_decrementer();
-
- /* Re-enable local CPU interrupts */
- local_irq_enable();
- mdelay(10);
- preempt_enable();
-
- /* Call platform functions marked "on wake" */
- pmac_pfunc_base_resume();
- pmac_pfunc_i2c_resume();
-
- /* Resume devices */
- device_resume();
-
- pm_restore_console();
-
- return 0;
-}
-
#define GRACKLE_PM (1<<7)
#define GRACKLE_DOZE (1<<5)
#define GRACKLE_NAP (1<<4)
@@ -2020,19 +1856,12 @@ static int powerbook_sleep_grackle(void)
unsigned long save_l2cr;
unsigned short pmcr1;
struct adb_request req;
- int ret;
struct pci_dev *grackle;
grackle = pci_get_bus_and_slot(0, 0);
if (!grackle)
return -ENODEV;
- ret = pmac_suspend_devices();
- if (ret) {
- printk(KERN_ERR "Sleep rejected by devices\n");
- return ret;
- }
-
/* Turn off various things. Darwin does some retry tests here... */
pmu_request(&req, NULL, 2, PMU_POWER_CTRL0, PMU_POW0_OFF|PMU_POW0_HARD_DRIVE);
pmu_wait_complete(&req);
@@ -2095,8 +1924,6 @@ static int powerbook_sleep_grackle(void)
PMU_POW_ON|PMU_POW_BACKLIGHT|PMU_POW_CHARGER|PMU_POW_IRLED|PMU_POW_MEDIABAY);
pmu_wait_complete(&req);
- pmac_wakeup_devices();
-
return 0;
}
@@ -2106,7 +1933,6 @@ powerbook_sleep_Core99(void)
unsigned long save_l2cr;
unsigned long save_l3cr;
struct adb_request req;
- int ret;
if (pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) < 0) {
printk(KERN_ERR "Sleep mode not supported on this machine\n");
@@ -2116,12 +1942,6 @@ powerbook_sleep_Core99(void)
if (num_online_cpus() > 1 || cpu_is_offline(0))
return -EAGAIN;
- ret = pmac_suspend_devices();
- if (ret) {
- printk(KERN_ERR "Sleep rejected by devices\n");
- return ret;
- }
-
/* Stop environment and ADB interrupts */
pmu_request(&req, NULL, 2, PMU_SET_INTR_MASK, 0);
pmu_wait_complete(&req);
@@ -2192,41 +2012,24 @@ powerbook_sleep_Core99(void)
/* Restore LPJ, cpufreq will adjust the cpu frequency */
loops_per_jiffy /= 2;
- pmac_wakeup_devices();
-
return 0;
}
#define PB3400_MEM_CTRL 0xf8000000
#define PB3400_MEM_CTRL_SLEEP 0x70
+static void __iomem *pb3400_mem_ctrl;
+
static int
powerbook_sleep_3400(void)
{
- int ret, i, x;
+ int i, x;
unsigned int hid0;
unsigned long p;
struct adb_request sleep_req;
- void __iomem *mem_ctrl;
unsigned int __iomem *mem_ctrl_sleep;
- /* first map in the memory controller registers */
- mem_ctrl = ioremap(PB3400_MEM_CTRL, 0x100);
- if (mem_ctrl == NULL) {
- printk("powerbook_sleep_3400: ioremap failed\n");
- return -ENOMEM;
- }
- mem_ctrl_sleep = mem_ctrl + PB3400_MEM_CTRL_SLEEP;
-
- /* Allocate room for PCI save */
- pbook_alloc_pci_save();
-
- ret = pmac_suspend_devices();
- if (ret) {
- pbook_free_pci_save();
- printk(KERN_ERR "Sleep rejected by devices\n");
- return ret;
- }
+ mem_ctrl_sleep = pb3400_mem_ctrl + PB3400_MEM_CTRL_SLEEP;
/* Save the state of PCI config space for some slots */
pbook_pci_save();
@@ -2271,14 +2074,10 @@ powerbook_sleep_3400(void)
while (asleep)
mb();
- pmac_wakeup_devices();
- pbook_free_pci_save();
- iounmap(mem_ctrl);
-
return 0;
}
-#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+#endif /* CONFIG_SUSPEND && CONFIG_PPC32 */
/*
* Support for /dev/pmu device
@@ -2451,6 +2250,157 @@ pmu_release(struct inode *inode, struct
return 0;
}
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
+static int powerbook_prepare_sleep(void)
+{
+ if (pmu_kind == PMU_OHARE_BASED) {
+ /* first map in the memory controller registers */
+ pb3400_mem_ctrl = ioremap(PB3400_MEM_CTRL, 0x100);
+ if (!pb3400_mem_ctrl) {
+ printk(KERN_ERR "powerbook_sleep_3400: "
+ "ioremap failed\n");
+ return -ENOMEM;
+ }
+
+ /* Allocate room for PCI save */
+ pbook_alloc_pci_save();
+ }
+
+ return 0;
+}
+
+/*
+ * overrides the weak arch_suspend_disable_irqs in kernel/power/main.c
+ *
+ * XXX: Once Scott Wood's patch is merged, this needs to use the ppc_md
+ * hooks that patch adds!
+ */
+void arch_suspend_disable_irqs(void)
+{
+#ifdef CONFIG_PMAC_BACKLIGHT
+ /* Tell backlight code not to muck around with the chip anymore */
+ pmu_backlight_set_sleep(1);
+#endif
+
+ /* Call platform functions marked "on sleep" */
+ pmac_pfunc_i2c_suspend();
+ pmac_pfunc_base_suspend();
+
+ /* Stop preemption */
+ preempt_disable();
+
+ /* Make sure the decrementer won't interrupt us */
+ asm volatile("mtdec %0" : : "r" (0x7fffffff));
+ /* Make sure any pending DEC interrupt occurring while we did
+ * the above didn't re-enable the DEC */
+ mb();
+ asm volatile("mtdec %0" : : "r" (0x7fffffff));
+
+ local_irq_disable();
+}
+
+static int powerbook_sleep(suspend_state_t state)
+{
+ int error = 0;
+
+ /* Wait for completion of async requests */
+ while (!batt_req.complete)
+ pmu_poll();
+
+ /* Giveup the lazy FPU & vec so we don't have to back them
+ * up from the low level code
+ */
+ enable_kernel_fp();
+
+#ifdef CONFIG_ALTIVEC
+ if (cpu_has_feature(CPU_FTR_ALTIVEC))
+ enable_kernel_altivec();
+#endif /* CONFIG_ALTIVEC */
+
+ switch (pmu_kind) {
+ case PMU_OHARE_BASED:
+ error = powerbook_sleep_3400();
+ break;
+ case PMU_HEATHROW_BASED:
+ case PMU_PADDINGTON_BASED:
+ error = powerbook_sleep_grackle();
+ break;
+ case PMU_KEYLARGO_BASED:
+ error = powerbook_sleep_Core99();
+ break;
+ default:
+ return -ENOSYS;
+ }
+
+ if (error)
+ return error;
+
+ mdelay(100);
+
+#ifdef CONFIG_PMAC_BACKLIGHT
+ /* Tell backlight code it can use the chip again */
+ pmu_backlight_set_sleep(0);
+#endif
+
+ return 0;
+}
+
+/*
+ * overrides the weak arch_suspend_enable_irqs in kernel/power/main.c
+ *
+ * XXX: Once Scott Wood's patch is merged, this needs to use the ppc_md
+ * hooks that patch adds!
+ */
+void arch_suspend_enable_irqs(void)
+{
+ /* Force a poll of ADB interrupts */
+ adb_int_pending = 1;
+ via_pmu_interrupt(0, NULL);
+
+ /* Restart jiffies & scheduling */
+ wakeup_decrementer();
+
+ /* Re-enable local CPU interrupts */
+ local_irq_enable();
+ mdelay(10);
+ preempt_enable();
+
+ /* Call platform functions marked "on wake" */
+ pmac_pfunc_base_resume();
+ pmac_pfunc_i2c_resume();
+}
+
+static void powerbook_finish_sleep(void)
+{
+ if (pmu_kind == PMU_OHARE_BASED) {
+ pbook_free_pci_save();
+ iounmap(pb3400_mem_ctrl);
+ }
+}
+
+static int pmu_sleep_valid(suspend_state_t state)
+{
+ return state == PM_SUSPEND_MEM
+ && (pmac_call_feature(PMAC_FTR_SLEEP_STATE, NULL, 0, -1) >= 0);
+}
+
+static struct platform_suspend_ops pmu_pm_ops = {
+ .prepare = powerbook_prepare_sleep,
+ .enter = powerbook_sleep,
+ .finish = powerbook_finish_sleep,
+ .valid = pmu_sleep_valid,
+};
+
+static int register_pmu_pm_ops(void)
+{
+ suspend_set_ops(&pmu_pm_ops);
+
+ return 0;
+}
+
+device_initcall(register_pmu_pm_ops);
+#endif
+
static int
pmu_ioctl(struct inode * inode, struct file *filp,
u_int cmd, u_long arg)
@@ -2459,35 +2409,30 @@ pmu_ioctl(struct inode * inode, struct f
int error = -EINVAL;
switch (cmd) {
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_DEPRECATED_PMU_SLEEP_IOCTL)
case PMU_IOC_SLEEP:
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
- if (sleep_in_progress)
- return -EBUSY;
- sleep_in_progress = 1;
- switch (pmu_kind) {
- case PMU_OHARE_BASED:
- error = powerbook_sleep_3400();
- break;
- case PMU_HEATHROW_BASED:
- case PMU_PADDINGTON_BASED:
- error = powerbook_sleep_grackle();
- break;
- case PMU_KEYLARGO_BASED:
- error = powerbook_sleep_Core99();
- break;
- default:
- error = -ENOSYS;
- }
- sleep_in_progress = 0;
+ printk(KERN_INFO
+ "via-pmu: the PMU_IOC_SLEEP ioctl is deprecated.\n");
+ printk(KERN_INFO "via-pmu: use \"echo mem >"
+ " /sys/power/state\" instead!\n");
+ printk(KERN_INFO
+ "via-pmu: this ioctl will be removed soon.\n");
+ error = pm_suspend(PM_SUSPEND_MEM);
break;
case PMU_IOC_CAN_SLEEP:
+ printk(KERN_INFO
+ "via-pmu: the PMU_IOC_CAN_SLEEP ioctl is deprecated.\n");
+ printk(KERN_INFO
+ "via-pmu: use \"grep mem /sys/power/state\" instead!\n");
+ printk(KERN_INFO
+ "via-pmu: this ioctl will be removed soon.\n");
if (pmac_call_feature(PMAC_FTR_SLEEP_STATE,NULL,0,-1) < 0)
return put_user(0, argp);
else
return put_user(1, argp);
-#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+#endif /* CONFIG_DEPRECATED_PMU_SLEEP_IOCTL */
#ifdef CONFIG_PMAC_BACKLIGHT_LEGACY
/* Compatibility ioctl's for backlight */
@@ -2495,9 +2440,6 @@ pmu_ioctl(struct inode * inode, struct f
{
int brightness;
- if (sleep_in_progress)
- return -EBUSY;
-
brightness = pmac_backlight_get_legacy_brightness();
if (brightness < 0)
return brightness;
@@ -2509,9 +2451,6 @@ pmu_ioctl(struct inode * inode, struct f
{
int brightness;
- if (sleep_in_progress)
- return -EBUSY;
-
error = get_user(brightness, argp);
if (error)
return error;
@@ -2566,87 +2505,7 @@ static int pmu_device_init(void)
}
device_initcall(pmu_device_init);
-
-#ifdef DEBUG_SLEEP
-static inline void
-polled_handshake(volatile unsigned char __iomem *via)
-{
- via[B] &= ~TREQ; eieio();
- while ((via[B] & TACK) != 0)
- ;
- via[B] |= TREQ; eieio();
- while ((via[B] & TACK) == 0)
- ;
-}
-
-static inline void
-polled_send_byte(volatile unsigned char __iomem *via, int x)
-{
- via[ACR] |= SR_OUT | SR_EXT; eieio();
- via[SR] = x; eieio();
- polled_handshake(via);
-}
-
-static inline int
-polled_recv_byte(volatile unsigned char __iomem *via)
-{
- int x;
-
- via[ACR] = (via[ACR] & ~SR_OUT) | SR_EXT; eieio();
- x = via[SR]; eieio();
- polled_handshake(via);
- x = via[SR]; eieio();
- return x;
-}
-
-int
-pmu_polled_request(struct adb_request *req)
-{
- unsigned long flags;
- int i, l, c;
- volatile unsigned char __iomem *v = via;
-
- req->complete = 1;
- c = req->data[0];
- l = pmu_data_len[c][0];
- if (l >= 0 && req->nbytes != l + 1)
- return -EINVAL;
-
- local_irq_save(flags);
- while (pmu_state != idle)
- pmu_poll();
-
- while ((via[B] & TACK) == 0)
- ;
- polled_send_byte(v, c);
- if (l < 0) {
- l = req->nbytes - 1;
- polled_send_byte(v, l);
- }
- for (i = 1; i <= l; ++i)
- polled_send_byte(v, req->data[i]);
-
- l = pmu_data_len[c][1];
- if (l < 0)
- l = polled_recv_byte(v);
- for (i = 0; i < l; ++i)
- req->reply[i + req->reply_len] = polled_recv_byte(v);
-
- if (req->done)
- (*req->done)(req);
-
- local_irq_restore(flags);
- return 0;
-}
-#endif /* DEBUG_SLEEP */
-
-
-/* FIXME: This is a temporary set of callbacks to enable us
- * to do suspend-to-disk.
- */
-
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
-
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
int pmu_sys_suspended;
static int pmu_sys_suspend(struct sys_device *sysdev, pm_message_t state)
@@ -2680,7 +2539,7 @@ static int pmu_sys_resume(struct sys_dev
return 0;
}
-#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+#endif /* CONFIG_SUSPEND && CONFIG_PPC32 */
static ssize_t show_kind(struct sys_device *sysdev, char *buf)
{
@@ -2724,10 +2583,10 @@ static struct sys_device device_pmu = {
};
static struct sysdev_driver driver_pmu = {
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
.suspend = &pmu_sys_suspend,
.resume = &pmu_sys_resume,
-#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+#endif /* CONFIG_SUSPEND && CONFIG_PPC32 */
.add = &pmu_sys_add,
};
@@ -2763,10 +2622,10 @@ EXPORT_SYMBOL(pmu_wait_complete);
EXPORT_SYMBOL(pmu_suspend);
EXPORT_SYMBOL(pmu_resume);
EXPORT_SYMBOL(pmu_unlock);
-#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32)
+#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
EXPORT_SYMBOL(pmu_enable_irled);
EXPORT_SYMBOL(pmu_battery_count);
EXPORT_SYMBOL(pmu_batteries);
EXPORT_SYMBOL(pmu_power_flags);
-#endif /* CONFIG_PM_SLEEP && CONFIG_PPC32 */
+#endif /* CONFIG_SUSPEND && CONFIG_PPC32 */
--- everything.orig/Documentation/feature-removal-schedule.txt 2007-11-08 11:48:53.122870607 +0100
+++ everything/Documentation/feature-removal-schedule.txt 2007-11-08 11:49:21.602885743 +0100
@@ -350,3 +350,13 @@ Why: The PMU information can be obtained
Who: Johannes Berg <johannes@sipsolutions.net>
---------------------------
+
+What: /dev/pmu suspend/can-suspend ioctls
+When: January 2010
+Files: drivers/macintosh/via-pmu.c
+Why: powermac supports proper generic pm_ops now and can suspend with
+ "echo mem > /sys/power/state" instead of the ioctl, checking if
+ it can suspend can be done by reading /sys/power/state.
+Who: Johannes Berg <johannes@sipsolutions.net>
+
+---------------------------
--- everything.orig/drivers/macintosh/Kconfig 2007-11-08 11:48:53.122870607 +0100
+++ everything/drivers/macintosh/Kconfig 2007-11-08 11:49:21.602885743 +0100
@@ -98,6 +98,18 @@ config DEPRECATED_PMU_INFO_IOCTLS
If in doubt, say Y even if you will not use the ioctl.
+config DEPRECATED_PMU_SLEEP_IOCTL
+ bool "Support deprecated PMU sleep ioctl"
+ depends on ADB_PMU && SUSPEND && PPC32
+ default y
+ help
+ The PMU code used to support suspending the machine via an ioctl
+ before Linux had a generic suspend framework. Now the PMU supports
+ suspending via the generic framework, this option adds the old
+ PMU specific ioctl to the kernel.
+
+ If in doubt, say Y even if you will not use the ioctl.
+
config ADB_PMU_LED
bool "Support for the Power/iBook front LED"
depends on ADB_PMU
^ permalink raw reply
* Re: [PATCH] powerpc: fix powersave-nap sysctl registration
From: Johannes Berg @ 2007-11-08 14:39 UTC (permalink / raw)
To: Paul Mackerras; +Cc: linuxppc-dev list, Eric W. Biederman
In-Reply-To: <1194462703.5996.0.camel@johannes.berg>
[-- Attachment #1: Type: text/plain, Size: 213 bytes --]
On Wed, 2007-11-07 at 20:11 +0100, Johannes Berg wrote:
> The sysctl check code complains about a writable directory,
> fix it.
Sorry, I missed that patch that fixed it already, please ignore.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply
* Re: mpc5200, sysctl table check failed
From: Johannes Berg @ 2007-11-08 15:09 UTC (permalink / raw)
To: Olof Johansson; +Cc: PowerPC dev list
In-Reply-To: <20071107204138.GA7066@lixom.net>
[-- Attachment #1: Type: text/plain, Size: 205 bytes --]
> I posted a patch for this yesterday, it's harmless, just a warning.
That's not actually true, if the sysctl check code warns in any way the
sysctl file doesn't show up in /proc/sys/
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply
* Re: [1/2] dtc: Refactor printing of property values in -Odts mode
From: Jon Loeliger @ 2007-11-08 15:25 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20071106232120.GH31367@localhost.localdomain>
So, like, the other day David Gibson mumbled:
> Currently the main recursive tree printing function,
> write_tree_source_node(), calls guess_type() to apply heuristics to
> see how to print a property value, then calls the appropriate
> write_propval_*() function to print it.
>
> However, future heuristics for handling internal labels and the like
> don't work well this way. Therefore, this patch refactors things to
> have write_tree_source_node() call a new write_propval() function,
> which incorporates the heurstic logic from guess_type() and also calls
> the right function to do the actual printing.
>
> No behavioural change.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Applied.
jdl
^ permalink raw reply
* Re: [2/2] dtc: Make -Idts -Odts preserve property-internal labels
From: Jon Loeliger @ 2007-11-08 15:25 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20071106232225.GI31367@localhost.localdomain>
So, like, the other day David Gibson mumbled:
> This patch changes -Odts mode output so that labels within property
> values in the input are preserved in the output. Applied on top of
> the earlier patch to preserve node and property labels in -Odts mode,
> this means that dtc in -Idts -Odts mode will transfer all labels in
> the input to the output.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Applied.
jdl
^ permalink raw reply
* Re: dtc: Add testcases exercising -Odts mode
From: Jon Loeliger @ 2007-11-08 15:26 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20071106233406.GJ31367@localhost.localdomain>
So, like, the other day David Gibson mumbled:
> This patch adds a batch of testcases exercising dtc's -Odts mode.
> Specifically it checks that using dtc to convert dtb->dts->dtb
> preserves the original dtb for a number of example dtb files.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Applied.
jdl
^ permalink raw reply
* Re: dtc: Better exercise dtc base and bytestring features
From: Jon Loeliger @ 2007-11-08 15:26 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20071106235822.GK31367@localhost.localdomain>
So, like, the other day David Gibson mumbled:
> This patch alters the main testcase, and the dts file corresponding to
> it so that we at least trivially exercise dtc's bytestring and base
> conversion features.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Applied.
jdl
^ permalink raw reply
* Re: mpc5200, sysctl table check failed
From: Olof Johansson @ 2007-11-08 15:28 UTC (permalink / raw)
To: Johannes Berg; +Cc: PowerPC dev list
In-Reply-To: <1194534579.6294.46.camel@johannes.berg>
On Thu, Nov 08, 2007 at 04:09:39PM +0100, Johannes Berg wrote:
>
>
> > I posted a patch for this yesterday, it's harmless, just a warning.
>
> That's not actually true, if the sysctl check code warns in any way the
> sysctl file doesn't show up in /proc/sys/
Oh, you're right. Well, it's been fixed now anyway. :-)
-Olof
^ permalink raw reply
* Re: [PATCH 4/3] Make swsusp_32.S usable for suspend-to-RAM.
From: Scott Wood @ 2007-11-08 15:56 UTC (permalink / raw)
To: Johannes Berg; +Cc: linuxppc-dev, paulus
In-Reply-To: <1194438345.4470.4.camel@johannes.berg>
Johannes Berg wrote:
>> +config PPC32_SUSPEND
>
>> +config PPC32_SWSUSP
>
>> -obj32-$(CONFIG_HIBERNATION) += swsusp_32.o
>> +obj32-$(CONFIG_PPC32_SUSPEND) += swsusp_32.o
>
> I think that's overkill, couldn't it just use CONFIG_PM_SLEEP here?
This file is specific to 32-bit classic PPC chips.
It doesn't matter, though, as I've redone the 83xx suspend to not need
that file.
-Scott
^ permalink raw reply
* Re: [PATCH 3/4] Use embedded libfdt in the bootwrapper
From: Scott Wood @ 2007-11-08 16:08 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <20071108033603.8A29FDDE0F@ozlabs.org>
On Thu, Nov 08, 2007 at 02:36:03PM +1100, David Gibson wrote:
> This patch incorporates libfdt (from the source embedded in an earlier
> patch) into the wrapper.a library used by the bootwrapper. This
> includes adding a libfdt_env.h file, which the libfdt sources need in
> order to integrate into the bootwrapper environment, and a
> libfdt-wrapper.c which provides glue to connect the bootwrappers
> abstract device tree callbacks to the libfdt functions.
>
> In addition, this patch changes the various wrapper and platform files
> to use libfdt functions instead of the older flatdevtree.c library.
Won't we need to change the dtc invocation in the wrapper to reserve some
space now?
Speaking of which, it seems dtc still only supports setting the total size,
as opposed to specifying the amount of additional space. It's still a bit
crappy having to guess how much space to add, but it's better than needing
to know how big the dtb will be without additional space.
How hard would it be to get libfdt to dynamically allocate any extra space
it needs? This is a regression from the current flat device tree code...
-Scott
^ permalink raw reply
* Re: use of fsl, in lite5200b.dts in git current
From: Scott Wood @ 2007-11-08 16:28 UTC (permalink / raw)
To: Jon Smirl; +Cc: linuxppc-embedded
In-Reply-To: <9e4733910711071815x344319ebye89168320dd53c0@mail.gmail.com>
Jon Smirl wrote:
> On 11/7/07, Matt Sealey <matt@genesi-usa.com> wrote:
>> Jon Smirl wrote:
>>> I'm not in favor of all these fsl prefixes. These chip families
>>> do get sold. What would we have done with intel,pxa320 all over
>>> the place when they sold it to marvell? mass changes to
>>> marvell,pxa320?
>> That's the idea, and there'd be a compatible entry for
>> intel,pxa320.
>
> The vendor part really isn't needed and it is going to be a source of
> trouble. The vendors are smart enough not to create two chips with
> the same part number. Adding a vendor qualifier complicates things
> needlessly.
I think you may be placing too much faith in the vendors.
Is a 7400 a Freescale powerpc chip, or a quad 2-input NAND gate? :-)
If you want to argue that the "MPC" part differentiates them, that's
just a less readable and more obsolete vendor prefix.
And not all compatible entries are part numbers; many are descriptions
of programming interfaces (such as cpm2 or gianfar). I'm not inclined
to bet that there will never be a conflict in such a namespace.
>> Actually the spec says you should use the stock ticker (IBM, FSL,
>> INTC, JAVA, MRVL) if they have one and if not, the company name in
>> lower case.
>>
>> Freescale are a funny one because they used to have a stock ticker
>> as MOT and then FSL but now they're privately owned, so it's gonna
>> have to be lower case :]
Well, technically the recommended prefix is an OUI number, and those are
less likely to change due to corporate shuffling, but they suck from a
readability perspective.
> Another example of how these vendor prefixes can change. The chip
> numbers are never going to change. Just use them and drop these
> vendor prefixes.
No. :-)
>> functionality. fsl,has-wdt differs from has-wdt ideally because
>
> This one I can buy, but it should be fsl-has-wdt. Drop the vendor
> prefixes.
How is fsl-has-wdt any better, other than it obscures namespace issues?
Vendor prefixes on properties are useful in that it might not mean
exactly the same thing as a similar property that gets standardized
later on.
> That's life in the Linux world, no backwards binary compatibility.
There's a huge difference between compatibility of kernel interfaces and
compatibility of interfaces between the kernel and something else --
whether it be userspace or firmware.
-Scott
^ permalink raw reply
* RE: ML405 gigabit ethernet with kernel 2.6.23
From: Rick Moleres @ 2007-11-08 16:29 UTC (permalink / raw)
To: MingLiu, kentaro, linuxppc-embedded
In-Reply-To: <BAY138-W3232BA0AE8C193E22B5011B28B0@phx.gbl>
[-- Attachment #1: Type: text/plain, Size: 1851 bytes --]
Hi,
Yes, for 1500 MTU these aren’t too bad. One thing to note, using the TCP_STREAM option does not take advantage of zero-copy and possibly checksum offload on the transmit side. You should use the TCP_SENDFILE option for that. We typically use options such as:
netperf -c -C -H 192.168.1.1 -t TCP_STREAM -- -s131072 -S131072 -m65536
netperf -c -C -H 192.168.1.1 -t UDP_STREAM -- -s131072 -S131072 -m8192 (if using jumbo frames of 8982)
-Rick
________________________________
From: linuxppc-embedded-bounces+moleres=xilinx.com@ozlabs.org [mailto:linuxppc-embedded-bounces+moleres=xilinx.com@ozlabs.org] On Behalf Of MingLiu
Sent: Thursday, November 08, 2007 2:32 AM
To: kentaro; linuxppc-embedded@ozlabs.org
Subject: RE: ML405 gigabit ethernet with kernel 2.6.23
Dear Kentaro,
> -------------------------------------------------------------
> "netperf -H 192.168.1.1 -t TCP_STREAM" 110 Mbps
> "netperf -H 192.168.1.1 -t UDP_STREAM" 210 Mbps
> -------------------------------------------------------------
Are these results the ones with or without Jumbo-frame enabled? If no, they are quite good I think. The results from Montavista probably are the ones with Jumbo-frame enabled.
For anybody who has interest on this topic, I have recently an accepted paper which has part of the content on this. The link is http://web.it.kth.se/~mingliu/publications/co_design(icfpt07).pdf and in 6.2 section, I listed our measurement results. 300Mbps for TCP and 400Mbps for UDP, with Jumbo-frame enabled. Unfortunately I did not explain the details and detailed configurations on our case. So these results are only for your reference.
BR
Ming
________________________________
用 Windows Live Spaces 展示个性自我,与好友分享生活! 了解更多信息! <http://spaces.live.com/?page=HP>
[-- Attachment #2: Type: text/html, Size: 6630 bytes --]
^ permalink raw reply
* Problems booting custom kernel and device tree on custom 85xx board
From: robert lazarski @ 2007-11-08 16:32 UTC (permalink / raw)
To: linuxppc-embedded
Hi all,
I finished the main part of porting u-boot 1.3 rc3 to our custon 8548
board and am now trying to boot our 2.6.22 kernel and device tree:
=> bootm 1000000 - c00000
## Booting image at 01000000 ...
Image Name: Linux-2.6.22.2
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1302607 Bytes = 1.2 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
## Current stack ends at 0x1FF9DD50 => set upper limit to 0x00800000
## cmdline at 0x007FFF00 ... 0x007FFF00
bd address = 0x1FF9DFB0
memstart = 0x00000000
memsize = 0x20000000
flashstart = 0xF8000000
flashsize = 0x08000000
flashoffset = 0x00000000
sramstart = 0x00000000
sramsize = 0x00000000
immr_base = 0xE0000000
bootflags = 0xE4013F80
intfreq = 888.888 MHz
busfreq = 355.555 MHz
ethaddr = 00:E0:0C:00:00:FD
eth1addr = 00:E0:0C:00:01:FD
eth2addr = 00:E0:0C:00:02:FD
eth3addr = 00:E0:0C:00:03:FD
IP addr = 10.101.43.142
baudrate = 115200 bps
Skipping initrd
Booting using the fdt at 0xc00000
No initrd
## device tree at 0x00C00000 ... 0x00C00CD3 (len=3284=0xCD4)
Loading Device Tree to 007fd000, end 007fdcd3 ... OK
## Transferring control to Linux (at address 00000000) ...
Where it hangs. I configured early serial output in the kernel, and
looking at the buffers after a soft reset we see:
grep __log_buf System.map
c029f424 b __log_buf
=> md 29f424 200
0029f424: 3c363e55 73696e67 204d5043 38357878 <6>Using MPC85xx
0029f434: 20415455 4d206d61 6368696e 65206465 ATUM machine de
0029f444: 73637269 7074696f 6e0a3c36 3e4d656d scription.<6>Mem
0029f454: 6f727920 43414d20 6d617070 696e673a ory CAM mapping:
0029f464: 2043414d 303d3235 364d622c 2043414d CAM0=256Mb, CAM
0029f474: 313d3235 364d622c 2043414d 323d304d 1=256Mb, CAM2=0M
0029f484: 62207265 73696475 616c3a20 304d620a b residual: 0Mb.
0029f494: 3c353e4c 696e7578 20766572 73696f6e <5>Linux version
0029f4a4: 20322e36 2e32322e 32202872 6f6f7440 2.6.22.2 (root@
0029f4b4: 6c696e75 782d726f 62657274 29202867 linux-robert) (g
0029f4c4: 63632076 65727369 6f6e2034 2e302e30 cc version 4.0.0
0029f4d4: 20284445 4e582045 4c444b20 342e3120 (DENX ELDK 4.1
0029f4e4: 342e302e 30292920 23312057 6564204e 4.0.0)) #1 Wed N
0029f4f4: 6f762037 2031363a 30393a34 30204553 ov 7 16:09:40 ES
0029f504: 54203230 30370a3c 373e466f 756e6420 T 2007.<7>Found
0029f514: 6c656761 63792073 65726961 6c20706f legacy serial po
0029f524: 72742030 20666f72 202f736f 63383534 rt 0 for /soc854
0029f534: 38406530 30303030 30302f73 65726961 8@e0000000/seria
0029f544: 6c403435 30300a3c 373e2020 6d656d3d l@4500.<7> mem=
0029f554: 65303030 34353030 2c207461 6464723d e0004500, taddr=
0029f564: 65303030 34353030 2c206972 713d302c e0004500, irq=0,
0029f574: 20636c6b 3d333535 35353535 34302c20 clk=355555540,
0029f584: 73706565 643d300a 3c373e46 6f756e64 speed=0.<7>Found
0029f594: 206c6567 61637920 73657269 616c2070 legacy serial p
0029f5a4: 6f727420 3120666f 72202f73 6f633835 ort 1 for /soc85
0029f5b4: 34384065 30303030 3030302f 73657269 48@e0000000/seri
0029f5c4: 616c4034 3630300a 3c373e20 206d656d al@4600.<7> mem
0029f5d4: 3d653030 30343630 302c2074 61646472 =e0004600, taddr
0029f5e4: 3d653030 30343630 302c2069 72713d30 =e0004600, irq=0
0029f5f4: 2c20636c 6b3d3335 35353535 3534302c , clk=355555540,
0029f604: 20737065 65643d30 0a3c373e 456e7465 speed=0.<7>Ente
0029f614: 72696e67 20616464 5f616374 6976655f ring add_active_
0029f624: 72616e67 6528302c 20302c20 31333130 range(0, 0, 1310
0029f634: 37322920 3020656e 74726965 73206f66 72) 0 entries of
0029f644: 20323536 20757365 640a3c37 3e546f70 256 used.<7>Top
0029f654: 206f6620 52414d3a 20307832 30303030 of RAM: 0x20000
0029f664: 3030302c 20546f74 616c2052 414d3a20 000, Total RAM:
0029f674: 30783230 30303030 30300a3c 373e4d65 0x20000000.<7>Me
0029f684: 6d6f7279 20686f6c 65207369 7a653a20 mory hole size:
0029f694: 304d420a 3c343e5a 6f6e6520 50464e20 0MB.<4>Zone PFN
0029f6a4: 72616e67 65733a0a 3c343e20 20444d41 ranges:.<4> DMA
0029f6b4: 20202020 20202020 20202020 2030202d 0 -
0029f6c4: 3e202020 31333130 37320a3c 343e2020 > 131072.<4>
0029f6d4: 4e6f726d 616c2020 20202031 33313037 Normal 13107
0029f6e4: 32202d3e 20202031 33313037 320a3c34 2 -> 131072.<4
0029f6f4: 3e656172 6c795f6e 6f64655f 6d61705b >early_node_map[
0029f704: 315d2061 63746976 65205046 4e207261 1] active PFN ra
0029f714: 6e676573 0a3c343e 20202020 303a2020 nges.<4> 0:
0029f724: 20202020 20203020 2d3e2020 20313331 0 -> 131
0029f734: 3037320a 3c373e4f 6e206e6f 64652030 072.<7>On node 0
0029f744: 20746f74 616c7061 6765733a 20313331 totalpages: 131
0029f754: 3037320a 3c373e20 20444d41 207a6f6e 072.<7> DMA zon
0029f764: 653a2031 30323420 70616765 73207573 e: 1024 pages us
0029f774: 65642066 6f72206d 656d6d61 700a3c37 ed for memmap.<7
0029f784: 3e202044 4d41207a 6f6e653a 20302070 > DMA zone: 0 p
0029f794: 61676573 20726573 65727665 640a3c37 ages reserved.<7
0029f7a4: 3e202044 4d41207a 6f6e653a 20313330 > DMA zone: 130
0029f7b4: 30343820 70616765 732c204c 49464f20 048 pages, LIFO
0029f7c4: 62617463 683a3331 0a000000 00000000 batch:31
0029f7d4: 00000000 00000000 00000000 00000000 ................
I'm not sure where to start looking at this point. Device tree issues?
gdb and the kernel? Any suggestions?
Robert
^ permalink raw reply
* [PATCH] balance ioremap/iounmap in {sycamore, walnut}_setup_arch()
From: Roel Kluin @ 2007-11-08 16:33 UTC (permalink / raw)
To: jwboyer; +Cc: linuxppc-dev
I guess it should be done after the last usage of kb_data or fpga_status?
--
Balance ioremap/iounmap
Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
---
diff --git a/arch/ppc/platforms/4xx/sycamore.c b/arch/ppc/platforms/4xx/sycamore.c
index 8689f3e..4f3bac1 100644
--- a/arch/ppc/platforms/4xx/sycamore.c
+++ b/arch/ppc/platforms/4xx/sycamore.c
@@ -99,28 +99,30 @@ sycamore_setup_arch(void)
kb_data = ioremap(SYCAMORE_PS2_BASE, 8);
if (!kb_data) {
printk(KERN_CRIT
"sycamore_setup_arch() kb_data ioremap failed\n");
return;
}
kb_cs = kb_data + 1;
+ iounmap(kb_data);
fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
if (!fpga_status) {
printk(KERN_CRIT
"sycamore_setup_arch() fpga_status ioremap failed\n");
return;
}
fpga_enable = fpga_status + 1;
fpga_polarity = fpga_status + 2;
fpga_trigger = fpga_status + 3;
fpga_brdc = fpga_status + 4;
+ iounmap(fpga_status);
/* split the keyboard and mouse interrupts */
fpga_brdc_data = readb(fpga_brdc);
fpga_brdc_data |= 0x80;
writeb(fpga_brdc_data, fpga_brdc);
writeb(0x3, fpga_enable);
diff --git a/arch/ppc/platforms/4xx/walnut.c b/arch/ppc/platforms/4xx/walnut.c
index 2f97723..8cfeb94 100644
--- a/arch/ppc/platforms/4xx/walnut.c
+++ b/arch/ppc/platforms/4xx/walnut.c
@@ -81,28 +81,30 @@ walnut_setup_arch(void)
kb_data = ioremap(WALNUT_PS2_BASE, 8);
if (!kb_data) {
printk(KERN_CRIT
"walnut_setup_arch() kb_data ioremap failed\n");
return;
}
kb_cs = kb_data + 1;
+ iounmap(kb_data);
fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
if (!fpga_status) {
printk(KERN_CRIT
"walnut_setup_arch() fpga_status ioremap failed\n");
return;
}
fpga_enable = fpga_status + 1;
fpga_polarity = fpga_status + 2;
fpga_trigger = fpga_status + 3;
fpga_brdc = fpga_status + 4;
+ iounmap(fpga_status);
/* split the keyboard and mouse interrupts */
fpga_brdc_data = readb(fpga_brdc);
fpga_brdc_data |= 0x80;
writeb(fpga_brdc_data, fpga_brdc);
writeb(0x3, fpga_enable);
^ permalink raw reply related
* Re: [PATCH] balance ioremap/iounmap in {sycamore, walnut}_setup_arch()
From: Valentine Barshak @ 2007-11-08 16:52 UTC (permalink / raw)
To: Roel Kluin; +Cc: linuxppc-dev
In-Reply-To: <47333A69.3030606@tiscali.nl>
Roel Kluin wrote:
> I guess it should be done after the last usage of kb_data or fpga_status?
I think no iounmap(kb_data) needed. Looks like the pointer kn_cs (kb_cs
= kb_data + 1) is used by the serio driver
(drivers/input/serio/i8042-ppcio.h).
Please note that we just ioremap and assign pointers here, not actually
reading the registers.
Also, looks like you unmap the fpga registers too early.
Thanks,
Valentine.
> --
> Balance ioremap/iounmap
>
> Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
> ---
> diff --git a/arch/ppc/platforms/4xx/sycamore.c b/arch/ppc/platforms/4xx/sycamore.c
> index 8689f3e..4f3bac1 100644
> --- a/arch/ppc/platforms/4xx/sycamore.c
> +++ b/arch/ppc/platforms/4xx/sycamore.c
> @@ -99,28 +99,30 @@ sycamore_setup_arch(void)
> kb_data = ioremap(SYCAMORE_PS2_BASE, 8);
> if (!kb_data) {
> printk(KERN_CRIT
> "sycamore_setup_arch() kb_data ioremap failed\n");
> return;
> }
>
> kb_cs = kb_data + 1;
> + iounmap(kb_data);
>
> fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
> if (!fpga_status) {
> printk(KERN_CRIT
> "sycamore_setup_arch() fpga_status ioremap failed\n");
> return;
> }
>
> fpga_enable = fpga_status + 1;
> fpga_polarity = fpga_status + 2;
> fpga_trigger = fpga_status + 3;
> fpga_brdc = fpga_status + 4;
> + iounmap(fpga_status);
>
> /* split the keyboard and mouse interrupts */
> fpga_brdc_data = readb(fpga_brdc);
> fpga_brdc_data |= 0x80;
> writeb(fpga_brdc_data, fpga_brdc);
>
> writeb(0x3, fpga_enable);
>
> diff --git a/arch/ppc/platforms/4xx/walnut.c b/arch/ppc/platforms/4xx/walnut.c
> index 2f97723..8cfeb94 100644
> --- a/arch/ppc/platforms/4xx/walnut.c
> +++ b/arch/ppc/platforms/4xx/walnut.c
> @@ -81,28 +81,30 @@ walnut_setup_arch(void)
> kb_data = ioremap(WALNUT_PS2_BASE, 8);
> if (!kb_data) {
> printk(KERN_CRIT
> "walnut_setup_arch() kb_data ioremap failed\n");
> return;
> }
>
> kb_cs = kb_data + 1;
> + iounmap(kb_data);
>
> fpga_status = ioremap(PPC40x_FPGA_BASE, 8);
> if (!fpga_status) {
> printk(KERN_CRIT
> "walnut_setup_arch() fpga_status ioremap failed\n");
> return;
> }
>
> fpga_enable = fpga_status + 1;
> fpga_polarity = fpga_status + 2;
> fpga_trigger = fpga_status + 3;
> fpga_brdc = fpga_status + 4;
> + iounmap(fpga_status);
>
> /* split the keyboard and mouse interrupts */
> fpga_brdc_data = readb(fpga_brdc);
> fpga_brdc_data |= 0x80;
> writeb(fpga_brdc_data, fpga_brdc);
>
> writeb(0x3, fpga_enable);
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
^ permalink raw reply
* Re: inbalanced ioremap/iounmap? in cpm_pic_init(); arch/powerpc/sysdev/commproc.c
From: Scott Wood @ 2007-11-08 16:55 UTC (permalink / raw)
To: Roel Kluin; +Cc: linuxppc-dev
In-Reply-To: <473235C6.2050104@tiscali.nl>
On Wed, Nov 07, 2007 at 11:01:42PM +0100, Roel Kluin wrote:
> It appears to me that ioremap/iounmap in cpm_pic_init() is imbalanced. I
> am not certain about this, nor was the patch tested. please review.
You missed several error paths... and if we're going to clean up the error
handling for this function, we might as well free cpm_pic_host, and do an
of_node_put() before the second of_find_compatible_node(), as well.
> @@ -187,13 +187,15 @@ unsigned int cpm_pic_init(void)
> goto end;
>
> if (setup_irq(eirq, &cpm_error_irqaction))
> printk(KERN_ERR "Could not allocate CPM error IRQ!");
>
> setbits32(&cpic_reg->cpic_cicr, CICR_IEN);
> -
> + goto end;
> +io_out:
> + iounmap(cpic_reg);
> end:
> of_node_put(np);
> return sirq;
> }
Ick. Maybe better to just duplicate the of_node_put().
-Scott
^ permalink raw reply
* Re: use of fsl, in lite5200b.dts in git current
From: Jon Smirl @ 2007-11-08 17:04 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-embedded
In-Reply-To: <47333939.6050106@freescale.com>
On 11/8/07, Scott Wood <scottwood@freescale.com> wrote:
> Jon Smirl wrote:
> > On 11/7/07, Matt Sealey <matt@genesi-usa.com> wrote:
> >> Jon Smirl wrote:
> >>> I'm not in favor of all these fsl prefixes. These chip families
> >>> do get sold. What would we have done with intel,pxa320 all over
> >>> the place when they sold it to marvell? mass changes to
> >>> marvell,pxa320?
> >> That's the idea, and there'd be a compatible entry for
> >> intel,pxa320.
> >
> > The vendor part really isn't needed and it is going to be a source of
> > trouble. The vendors are smart enough not to create two chips with
> > the same part number. Adding a vendor qualifier complicates things
> > needlessly.
>
> I think you may be placing too much faith in the vendors.
> Is a 7400 a Freescale powerpc chip, or a quad 2-input NAND gate? :-)
There has to be more to the part number for the Freescale powerpc chip
than just 7400.
7400 is a shorthand name, it is not an orderable part number.
> If you want to argue that the "MPC" part differentiates them, that's
> just a less readable and more obsolete vendor prefix.
The MPC is what is printed on the chip. fsl is not printed there. MPC
is part of the orderable part number.
>
> And not all compatible entries are part numbers; many are descriptions
> of programming interfaces (such as cpm2 or gianfar). I'm not inclined
> to bet that there will never be a conflict in such a namespace.
>
> >> Actually the spec says you should use the stock ticker (IBM, FSL,
> >> INTC, JAVA, MRVL) if they have one and if not, the company name in
> >> lower case.
> >>
> >> Freescale are a funny one because they used to have a stock ticker
> >> as MOT and then FSL but now they're privately owned, so it's gonna
> >> have to be lower case :]
>
> Well, technically the recommended prefix is an OUI number, and those are
> less likely to change due to corporate shuffling, but they suck from a
> readability perspective.
>
> > Another example of how these vendor prefixes can change. The chip
> > numbers are never going to change. Just use them and drop these
> > vendor prefixes.
>
> No. :-)
>
> >> functionality. fsl,has-wdt differs from has-wdt ideally because
> >
> > This one I can buy, but it should be fsl-has-wdt. Drop the vendor
> > prefixes.
>
> How is fsl-has-wdt any better, other than it obscures namespace issues?
>
> Vendor prefixes on properties are useful in that it might not mean
> exactly the same thing as a similar property that gets standardized
> later on.
>
> > That's life in the Linux world, no backwards binary compatibility.
>
> There's a huge difference between compatibility of kernel interfaces and
> compatibility of interfaces between the kernel and something else --
> whether it be userspace or firmware.
>
> -Scott
>
>
--
Jon Smirl
jonsmirl@gmail.com
^ permalink raw reply
* Re: libfdt: Add more documentation (path the fifth)
From: Jon Loeliger @ 2007-11-08 17:15 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20071107005414.GE553@localhost.localdomain>
So, like, the other day David Gibson mumbled:
> This patch documents a few more functions in libfdt.h. All the
> read-only functions are now documented.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Applied.
Thanks,
jdl
^ permalink raw reply
* Re: [PATCH 1/2] pasemi_mac: Don't set replace-source-address descriptor bits
From: Jeff Garzik @ 2007-11-08 17:47 UTC (permalink / raw)
To: Olof Johansson; +Cc: netdev, jgarzik, linuxppc-dev
In-Reply-To: <20071107042039.GD22637@lixom.net>
On Tue, Nov 06, 2007 at 10:20:39PM -0600, Olof Johansson wrote:
> Don't use the "replace source address with local MAC address" bits, since
> it causes problems on some variations of the hardware due to an erratum.
>
>
> Signed-off-by: Olof Johansson <olof@lixom.net>
applied 1-2
^ permalink raw reply
* Re: [PATCH 0/5] fixups for mpc8360 rev. 2.1 erratum #2 (RGMII Timing)
From: Kim Phillips @ 2007-11-08 18:15 UTC (permalink / raw)
To: avorontsov; +Cc: netdev, linuxppc-dev, paulus, Li Yang, jgarzik
In-Reply-To: <20071108141611.GA5770@localhost.localdomain>
On Thu, 8 Nov 2007 17:16:11 +0300
Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
> On Mon, Nov 05, 2007 at 12:15:30PM -0600, Kim Phillips wrote:
> > Hello all,
> >
> > the following patches fix RGMII timing for rev. 2.1 of the mpc8360,
> > according to erratum #2 (erratum text included below). Basically the
> > most intrusive part is the addition of two new RGMII Internal Delay
> > modes; one for TX delay only, and the other for RX delay only (i.e, not
> > both at the same time).
> >
> > Please review, and since this affects both netdev and powerpc trees,
> > one maintainer should ack them for the other to push upstream (i.e,
> > Kumar acks them, and Leo picks them up to go through netdev or the
> > other way around; either way is fine with me). I'm hoping they're
> > trivial enough to go in 2.6.24.
> >
> > Depending on how the review goes, a follow-on patch to u-boot will be
> > sent out that fixes up the phy-connection-type in the device tree (from
> > "rgmii-id" to "rgmii-rxid" iff on mpc8360rev2.1).
>
> I've upgraded CPU to rev2.1, board rev0.3.
>
thanks for testing this. I tested these patches on a "pilot assy 0.3".
> Applied 5/5 patches onto paulus/powerpc.git at e403149c92a. Here is
> the results:
>
> If I use -rxid, then geth not able to transmit anything.
> With -txid geth not able to receive anything.
>
> With just -id everything works fine though...
>
>
> Maybe there should be another condition, in addition to cpu rev2.1?
>
the errata simply states 'pilot boards', but we can probably modify
u-boot to look at the cpu rev and the board rev (BCSR 12).
My bcsr12 looks like:
=> md.b f800000c 1
f800000c: 10 .
what is yours?
If it's something like 0x03, the u-boot patch will probably look like:
if ((bcsr[12] == 0x10) &&
(immr->sysconf.spridr == SPR_8360_REV21 ||
immr->sysconf.spridr == SPR_8360E_REV21))
/* if phy-connection-type is "rgmii-id", set it to "rgmii-rxid" */
...
but these linux patches would remain the same (the clk and data delay
settings for the UCC's are still valid; it's just the PHY config
that is triggering your problem from what I can tell).
Thanks,
Kim
> > mpc8360 rev 2.1 erratum #2:
> > -----------
> > Recommended AC timings for chip 8360Rev2.1 UCC ETH RGMII when working
> > with Rev Pilot MDS for proper RGMII operation:
> >
> > IMMR_BASE + 0x14A8[4:5] = 11 (clk delay for UCC 2)
> > IMMR_BASE + 0x14A8[18:19] = 11 (clk delay for UCC 1)
> > IMMR_BASE + 0x14AC[20:27] = 10101010 (data delay for both UCC's)
> >
> > The Phy (Marvell 88e1111) should be configured NOT to work with RGMII
> > delay for TxD.
^ permalink raw reply
* Re: [PATCH 0/5] fixups for mpc8360 rev. 2.1 erratum #2 (RGMII Timing)
From: Anton Vorontsov @ 2007-11-08 18:39 UTC (permalink / raw)
To: Kim Phillips; +Cc: netdev, linuxppc-dev, paulus, Li Yang, jgarzik
In-Reply-To: <20071108121508.39a65c33.kim.phillips@freescale.com>
On Thu, Nov 08, 2007 at 12:15:08PM -0600, Kim Phillips wrote:
> On Thu, 8 Nov 2007 17:16:11 +0300
> Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
>
> > On Mon, Nov 05, 2007 at 12:15:30PM -0600, Kim Phillips wrote:
> > > Hello all,
> > >
> > > the following patches fix RGMII timing for rev. 2.1 of the mpc8360,
> > > according to erratum #2 (erratum text included below). Basically the
> > > most intrusive part is the addition of two new RGMII Internal Delay
> > > modes; one for TX delay only, and the other for RX delay only (i.e, not
> > > both at the same time).
> > >
> > > Please review, and since this affects both netdev and powerpc trees,
> > > one maintainer should ack them for the other to push upstream (i.e,
> > > Kumar acks them, and Leo picks them up to go through netdev or the
> > > other way around; either way is fine with me). I'm hoping they're
> > > trivial enough to go in 2.6.24.
> > >
> > > Depending on how the review goes, a follow-on patch to u-boot will be
> > > sent out that fixes up the phy-connection-type in the device tree (from
> > > "rgmii-id" to "rgmii-rxid" iff on mpc8360rev2.1).
> >
> > I've upgraded CPU to rev2.1, board rev0.3.
> >
> thanks for testing this. I tested these patches on a "pilot assy 0.3".
Same here.
> > Applied 5/5 patches onto paulus/powerpc.git at e403149c92a. Here is
> > the results:
> >
> > If I use -rxid, then geth not able to transmit anything.
> > With -txid geth not able to receive anything.
> >
> > With just -id everything works fine though...
> >
> >
> > Maybe there should be another condition, in addition to cpu rev2.1?
> >
> the errata simply states 'pilot boards', but we can probably modify
> u-boot to look at the cpu rev and the board rev (BCSR 12).
>
> My bcsr12 looks like:
>
> => md.b f800000c 1
> f800000c: 10 .
>
> what is yours?
=> md.b f800000c 1
f800000c: 10 .
:-/
U-Boot 1.3.0-rc3-g281df457-dirty (Nov 6 2007 - 18:19:35) MPC83XX
CPU: e300c1, MPC8360E, Rev: 21 at 528 MHz, CSB: 264 MHz
root@b1:~# cat /proc/cpuinfo
processor : 0
cpu : e300c1
clock : 528.000000MHz
revision : 3.1 (pvr 8083 0031)
bogomips : 131.58
timebase : 66000000
platform : MPC836x MDS
+ /* handle mpc8360ea rev.2.1 erratum 2: RGMII Timing */
+ svid = mfspr(SPRN_SVR);
+ if (svid == 0x80480021) {
^^ that branch executes on the board I'm testing.
> If it's something like 0x03, the u-boot patch will probably look like:
>
> if ((bcsr[12] == 0x10) &&
> (immr->sysconf.spridr == SPR_8360_REV21 ||
> immr->sysconf.spridr == SPR_8360E_REV21))
> /* if phy-connection-type is "rgmii-id", set it to "rgmii-rxid" */
> ...
>
> but these linux patches would remain the same (the clk and data delay
> settings for the UCC's are still valid; it's just the PHY config
> that is triggering your problem from what I can tell).
Yup, most likely this is not UCC specific, but PHY. For some reason
delays making harm here...
Thanks,
--
Anton Vorontsov
email: cbou@mail.ru
backup email: ya-cbou@yandex.ru
irc://irc.freenode.net/bd2
^ permalink raw reply
* Re: [PATCH 0/5] fixups for mpc8360 rev. 2.1 erratum #2 (RGMII Timing)
From: Kim Phillips @ 2007-11-08 19:11 UTC (permalink / raw)
To: avorontsov; +Cc: netdev, linuxppc-dev, paulus, Li Yang, jgarzik
In-Reply-To: <20071108183952.GA18117@localhost.localdomain>
On Thu, 8 Nov 2007 21:39:52 +0300
Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
> On Thu, Nov 08, 2007 at 12:15:08PM -0600, Kim Phillips wrote:
> > On Thu, 8 Nov 2007 17:16:11 +0300
> > Anton Vorontsov <avorontsov@ru.mvista.com> wrote:
> >
> > > On Mon, Nov 05, 2007 at 12:15:30PM -0600, Kim Phillips wrote:
> > > > Hello all,
> > > >
> > > > the following patches fix RGMII timing for rev. 2.1 of the mpc8360,
> > > > according to erratum #2 (erratum text included below). Basically the
> > > > most intrusive part is the addition of two new RGMII Internal Delay
> > > > modes; one for TX delay only, and the other for RX delay only (i.e, not
> > > > both at the same time).
> > > >
> > > > Please review, and since this affects both netdev and powerpc trees,
> > > > one maintainer should ack them for the other to push upstream (i.e,
> > > > Kumar acks them, and Leo picks them up to go through netdev or the
> > > > other way around; either way is fine with me). I'm hoping they're
> > > > trivial enough to go in 2.6.24.
> > > >
> > > > Depending on how the review goes, a follow-on patch to u-boot will be
> > > > sent out that fixes up the phy-connection-type in the device tree (from
> > > > "rgmii-id" to "rgmii-rxid" iff on mpc8360rev2.1).
> > >
> > > I've upgraded CPU to rev2.1, board rev0.3.
> > >
> > thanks for testing this. I tested these patches on a "pilot assy 0.3".
>
> Same here.
>
> > > Applied 5/5 patches onto paulus/powerpc.git at e403149c92a. Here is
> > > the results:
> > >
> > > If I use -rxid, then geth not able to transmit anything.
> > > With -txid geth not able to receive anything.
> > >
> > > With just -id everything works fine though...
> > >
> > >
> > > Maybe there should be another condition, in addition to cpu rev2.1?
> > >
> > the errata simply states 'pilot boards', but we can probably modify
> > u-boot to look at the cpu rev and the board rev (BCSR 12).
> >
> > My bcsr12 looks like:
> >
> > => md.b f800000c 1
> > f800000c: 10 .
> >
> > what is yours?
>
> => md.b f800000c 1
> f800000c: 10 .
>
> :-/
>
> U-Boot 1.3.0-rc3-g281df457-dirty (Nov 6 2007 - 18:19:35) MPC83XX
> CPU: e300c1, MPC8360E, Rev: 21 at 528 MHz, CSB: 264 MHz
>
> root@b1:~# cat /proc/cpuinfo
> processor : 0
> cpu : e300c1
> clock : 528.000000MHz
> revision : 3.1 (pvr 8083 0031)
> bogomips : 131.58
> timebase : 66000000
> platform : MPC836x MDS
>
check. :/
>
> + /* handle mpc8360ea rev.2.1 erratum 2: RGMII Timing */
> + svid = mfspr(SPRN_SVR);
> + if (svid == 0x80480021) {
>
> ^^ that branch executes on the board I'm testing.
right, but whether it does or not doesn't affect your failure outcome
either I'm assuming.
> > If it's something like 0x03, the u-boot patch will probably look like:
> >
> > if ((bcsr[12] == 0x10) &&
> > (immr->sysconf.spridr == SPR_8360_REV21 ||
> > immr->sysconf.spridr == SPR_8360E_REV21))
> > /* if phy-connection-type is "rgmii-id", set it to "rgmii-rxid" */
> > ...
> >
> > but these linux patches would remain the same (the clk and data delay
> > settings for the UCC's are still valid; it's just the PHY config
> > that is triggering your problem from what I can tell).
>
> Yup, most likely this is not UCC specific, but PHY. For some reason
> delays making harm here...
hmm..
Net: UEC: PHY is Marvell 88E11x1 (1410cc2)
I have jumper JP1 set to 3.3V.
can you send me your:
=> md.b f8000000 15
f8000000: 04 04 00 c6 94 60 00 00 ac 2f 00 b8 10 3f 30 02 .....`.../...?0.
f8000010: 05 07 05 15 11 .....
and maybe try the following on top of these 5 patches (to specify rgmii
mode in the bcsr's):
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c
index 0a72260..753071e 100644
--- a/arch/powerpc/platforms/83xx/mpc836x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c
@@ -98,6 +98,11 @@ static void __init mpc836x_mds_setup_arch(void)
!= NULL){
uint svid;
+ /* configure RGMII mode for both GETH ports */
+#define BCSR8_TSECXM_RGMII 0xf0
+ clrbits8(&bcsr_regs[8], BCSR8_TSECXM_RGMII);
+
+
/* Reset the Ethernet PHY */
#define BCSR9_GETHRST 0x20
clrbits8(&bcsr_regs[9], BCSR9_GETHRST);
Thanks,
Kim
^ permalink raw reply related
* DTS Bytestrings Representation in /dts-v1/ files
From: Jon Loeliger @ 2007-11-08 19:18 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <E1Iplfp-0003WY-MB@jdl.com>
Folks,
When the new DTS /dts-v1/ support is released Real Soon Now,
it will support C-like literal constants. Hex values will be
prefixed with 0x, binary with 0b, and bare numbers will be
decimal unless they start with a leading 0.
One outstanding question on which I'd like some feedback
is the issue of bytestring value representation.
Currently they look like this:
stuff = [ 0b 31 22 de ea ad be ef ];
One opinion is to have them continue to look like that
and be in hex only.
Another opinion is to allow the new, consistent C-style
literals and expressions so that one could have:
new_stuff = [ 0x31 49 '1' 23 17 ];
Opinions?
Thanks,
jdl
^ permalink raw reply
* Re: DTS Bytestrings Representation in /dts-v1/ files
From: Josh Boyer @ 2007-11-08 19:33 UTC (permalink / raw)
To: Jon Loeliger; +Cc: linuxppc-dev
In-Reply-To: <E1IqCtu-0000ZE-Vi@jdl.com>
On Thu, 08 Nov 2007 13:18:50 -0600
Jon Loeliger <jdl@jdl.com> wrote:
>
> Folks,
>
> When the new DTS /dts-v1/ support is released Real Soon Now,
> it will support C-like literal constants. Hex values will be
> prefixed with 0x, binary with 0b, and bare numbers will be
> decimal unless they start with a leading 0.
>
> One outstanding question on which I'd like some feedback
> is the issue of bytestring value representation.
>
> Currently they look like this:
>
> stuff = [ 0b 31 22 de ea ad be ef ];
>
> One opinion is to have them continue to look like that
> and be in hex only.
>
> Another opinion is to allow the new, consistent C-style
> literals and expressions so that one could have:
>
> new_stuff = [ 0x31 49 '1' 23 17 ];
>
> Opinions?
My off-the-cuff opinion is to leave them as they are today. They seem
to mostly be used for MAC addresses, and you don't really see a whole
lot of those with the 0x prefix before every number.
At the same time, inconsistency sucks.
josh
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox