Commit ccb5ba85 authored by Linus Torvalds's avatar Linus Torvalds

Linux 2.4.0-test9pre2

    - scsi fixes
    - network updates
    - PCI bridge scanning fix: assign numbers properly
    - sparc updates
    - Riel VM update
    - disallow re-mounting same filesystem in same place multiple times.
      Too confusing. And /etc/mtab gets strange.
    - PPC updates (including PPC-related drivers etc)
    - more initcall updates
    - various net drvr updates and fixes
    - "extern inline" -> "static inline".  It doesn't matter right now,
      but it's proactive for future gcc versions.
parent 1fc53b22
...@@ -1088,22 +1088,25 @@ CONFIG_BLK_DEV_IDEDOUBLER ...@@ -1088,22 +1088,25 @@ CONFIG_BLK_DEV_IDEDOUBLER
Support for PowerMac IDE devices (must also enable IDE) Support for PowerMac IDE devices (must also enable IDE)
CONFIG_BLK_DEV_IDE_PMAC CONFIG_BLK_DEV_IDE_PMAC
No help for CONFIG_BLK_DEV_IDE_PMAC This driver provides support for the built-in IDE controller on most
of the recent Apple Power Macintoshes and PowerBooks.
If unsure, say Y.
PowerMac IDE DMA support PowerMac IDE DMA support
CONFIG_BLK_DEV_IDEDMA_PMAC CONFIG_BLK_DEV_IDEDMA_PMAC
No help for CONFIG_BLK_DEV_IDEDMA_PMAC This option allows the driver for the built-in IDE controller on
Power Macintoshes and PowerBooks to use DMA (direct memory access)
to transfer data to and from memory. Saying Y is safe and improves
performance.
Use DMA by default Use DMA by default
CONFIG_IDEDMA_PMAC_AUTO CONFIG_BLK_DEV_IDEDMA_PMAC_AUTO
Prior to kernel version 2.1.112, Linux used to automatically use This option allows the driver for the built-in IDE controller on
DMA for IDE drives and chipsets which support it. Due to concerns Power Macintoshes and PowerBooks to use DMA automatically, without
about a couple of cases where buggy hardware may have caused damage, it having to be explicitly enabled. This option is provided because
the default is now to NOT use DMA automatically. To revert to the of concerns about a couple of cases where using DMA on buggy PC
previous behaviour, say Y to this question. hardware may have caused damage. Saying Y should be safe on all
Apple machines.
If you suspect your hardware is at all flakey, say N here.
Do NOT email the IDE kernel people regarding this issue!
Macintosh Quadra/Powerbook IDE interface support Macintosh Quadra/Powerbook IDE interface support
CONFIG_BLK_DEV_MAC_IDE CONFIG_BLK_DEV_MAC_IDE
...@@ -9984,10 +9987,24 @@ CONFIG_USB_WMFORCE ...@@ -9984,10 +9987,24 @@ CONFIG_USB_WMFORCE
The module will be called wmforce.o. If you want to compile it as a The module will be called wmforce.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt. module, say M here and read Documentation/modules.txt.
Use input layer for ADB devices
CONFIG_INPUT_ADBHID
Say Y here if you want to have ADB (Apple Desktop Bus) HID devices
such as keyboards, mice, joysticks, or graphic tablets handled by the
input layer. If you say Y here, make sure to say Y to the
corresponding drivers "Keyboard support" (CONFIG_INPUT_KEYBDEV),
"Mouse Support" (CONFIG_INPUT_MOUSEDEV) and "Event interface support"
(CONFIG_INPUT_EVDEV) as well.
If you say N here, you still have the option of using the old ADB
keyboard and mouse drivers.
If unsure, say Y.
Keyboard support Keyboard support
CONFIG_INPUT_KEYBDEV CONFIG_INPUT_KEYBDEV
Say Y here if you want your USB HID keyboard to be able to serve as Say Y here if you want your USB HID keyboard (or an ADB keyboard
a system keyboard. handled by the input layer) to be able to serve as a system keyboard.
This driver is also available as a module ( = code which can be This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want). inserted in and removed from the running kernel whenever you want).
...@@ -9996,10 +10013,11 @@ CONFIG_INPUT_KEYBDEV ...@@ -9996,10 +10013,11 @@ CONFIG_INPUT_KEYBDEV
Mouse support Mouse support
CONFIG_INPUT_MOUSEDEV CONFIG_INPUT_MOUSEDEV
Say Y here if you want your USB HID mouse to be accessible as Say Y here if you want your USB HID mouse (or ADB mouse handled by
char devices 13:32+ - /dev/input/mouseX and 13:63 - /dev/input/mice the input layer) to be accessible as char devices 13:32+ -
as an emulated PS/2 mouse. That way, all user space programs will /dev/input/mouseX and 13:63 - /dev/input/mice as an emulated ImPS/2
be able to use your mouse. mouse. That way, all user space programs will be able to use your
mouse.
If unsure, say Y. If unsure, say Y.
...@@ -10034,8 +10052,8 @@ CONFIG_INPUT_JOYDEV ...@@ -10034,8 +10052,8 @@ CONFIG_INPUT_JOYDEV
Event interface support Event interface support
CONFIG_INPUT_EVDEV CONFIG_INPUT_EVDEV
Say Y here if you want your USB HID device events be accessible Say Y here if you want your USB or ADB HID device events be accessible
under char device 13:64+ - /dev/inputX in a generic way. under char device 13:64+ - /dev/input/eventX in a generic way.
This is the future ... This is the future ...
USB Scanner support USB Scanner support
...@@ -15430,6 +15448,42 @@ CONFIG_PMAC_PBOOK ...@@ -15430,6 +15448,42 @@ CONFIG_PMAC_PBOOK
have it autoloaded. The act of removing the module shuts down the have it autoloaded. The act of removing the module shuts down the
sound hardware for more power savings. sound hardware for more power savings.
Mac-on-Linux support
CONFIG_MOL
This option enables low-level support for Mac-on-Linux.
MOL lets you run MacOS and Linux simultaneously. Please
visit <http://www.maconlinux.org> for more information.
If unsure, say Y.
ADB raw keycode support
CONFIG_MAC_ADBKEYCODES
This provides support for sending raw ADB keycodes to console
devices. This is the default up to 2.4.0, but in future this may be
phased out in favor of generic Linux keycodes. If you say Y here, you
can dynamically switch via the
/proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
sysctl and with the "keyboard_sends_linux_keycodes=" kernel argument.
If unsure, say Y here.
Mouse button 2+3 emulation support
CONFIG_MAC_EMUMOUSEBTN
This provides generic support for emulating the 2nd and 3rd mouse
button with keypresses. If you say Y here, the emulation is still
disabled by default. The emulation is controlled by these sysctl entries:
/proc/sys/dev/mac_hid/mouse_button_emulation
/proc/sys/dev/mac_hid/mouse_button2_keycode
/proc/sys/dev/mac_hid/mouse_button3_keycode
Enhanced Real Time Clock Support
CONFIG_PPC_RTC
If you say Y here and create a character special file /dev/rtc with
major number 10 and minor number 135 using mknod ("man mknod"), you
will get access to the real time clock (or hardware clock) built
into your computer.
If unsure, say Y here.
Support for Open Firmware device tree in /proc Support for Open Firmware device tree in /proc
CONFIG_PROC_DEVICETREE CONFIG_PROC_DEVICETREE
This option adds a device-tree directory under /proc which contains This option adds a device-tree directory under /proc which contains
......
...@@ -6,3 +6,5 @@ commands.txt ...@@ -6,3 +6,5 @@ commands.txt
- overview of kbuild commands - overview of kbuild commands
config-language.txt config-language.txt
- specification of Config Language, the language in Config.in files - specification of Config Language, the language in Config.in files
makefiles.txt
- developer information for linux kernel makefiles
This diff is collapsed.
...@@ -131,6 +131,8 @@ James Fidell, Taso Hatzi, Peter K - intrepid test team ...@@ -131,6 +131,8 @@ James Fidell, Taso Hatzi, Peter K - intrepid test team
And thanks to every supporter free software. And thanks to every supporter free software.
(see top of 8139too.c for further credits and kudos)
Submitting Bug Reports Submitting Bug Reports
...@@ -157,38 +159,42 @@ the list, please report it. That's why we do beta releases, after all... ...@@ -157,38 +159,42 @@ the list, please report it. That's why we do beta releases, after all...
1) Work with Donald to merge fixes and updates into his driver. 1) Work with Donald to merge fixes and updates into his driver.
2) 2.2.x COMPATIBILITY SUPPORT IS BROKEN. DO NOT USE IT. 2) ethtool support
It is included only for enterprising hackers willing to help fix it.
3) PPC platform has stability problems. 3) PPC platform has stability problems. (XXX: verify this is still true)
4) Sparc64 platform not tested at all. 4) Sparc64 platform not tested at all.
5) Identify and fix "rx wedge" when ping flooded. (WIP)
7) N-Way auto-negotiation is known to fail in some cases. This problem
also occurs in the rtl8139 driver in kernels 2.2.x/2.3.x. Solution:
Following technique in sunhme and sunbmac, use a kernel timer to
manually perform autonegotiation in case the network or card cannot do
it automatically. (patches welcome)
8) Much improved command line / module parameter setup. (patches and 8) Much improved command line / module parameter setup. (patches and
suggestions welcome) (WIP) suggestions welcome) (WIP)
9) Better documentation. (patches welcome) 9) Better documentation. (patches welcome)
10) (rtl8139-diag modified from Becker version, DONE)
User-mode (or maybe optional /proc) diagnostics program.
11) RTL8139C support untested. 11) RTL8139C support untested.
12) 10base-T support flaky or slow 12) 10base-T support flaky or slow (todo: verify this is still true)
Change History Change History
-------------- --------------
Version 0.9.10 - September 12, 2000
* Never wrap an Rx packet (faster Rx interrupt handling)
* Clear all TxAborted conditions (bug fix)
* Correct copyright
* More credits
* Update NWay doc URL
* Clean up commonly used ifdef switches
* Reorg info displayed at bootup/modprobe time
* Remove some unneeded spinlocks
* Misc cosmetic code cleanup
* Always print interrupt status for abnormal interrupts
* Use RealTek-recommended FIFO and DMA burst settings (1024 bytes)
Version 0.9.9 - September 9, 2000 Version 0.9.9 - September 9, 2000
* Fix oops-able bug in Rx ring wrap calculation (David Ford) * Fix oops-able bug in Rx ring wrap calculation (David Ford)
......
...@@ -188,6 +188,11 @@ pci_find_capability() Find specified capability in device's capability ...@@ -188,6 +188,11 @@ pci_find_capability() Find specified capability in device's capability
list. list.
pci_module_init() Inline helper function for ensuring correct pci_module_init() Inline helper function for ensuring correct
pci_driver initialization and error handling. pci_driver initialization and error handling.
pci_resource_start() Returns bus start address for a given PCI region
pci_resource_end() Returns bus end address for a given PCI region
pci_resource_len() Returns the byte length of a PCI region
pci_set_drvdata() Set private driver data pointer for a pci_dev
pci_get_drvdata() Return private driver data pointer for a pci_dev
7. Miscellaneous hints 7. Miscellaneous hints
......
...@@ -161,7 +161,7 @@ DRIVERS-$(CONFIG_DIO) += drivers/dio/dio.a ...@@ -161,7 +161,7 @@ DRIVERS-$(CONFIG_DIO) += drivers/dio/dio.a
DRIVERS-$(CONFIG_SBUS) += drivers/sbus/sbus.a DRIVERS-$(CONFIG_SBUS) += drivers/sbus/sbus.a
DRIVERS-$(CONFIG_ZORRO) += drivers/zorro/zorro.a DRIVERS-$(CONFIG_ZORRO) += drivers/zorro/zorro.a
DRIVERS-$(CONFIG_FC4) += drivers/fc4/fc4.a DRIVERS-$(CONFIG_FC4) += drivers/fc4/fc4.a
DRIVERS-$(CONFIG_PPC) += drivers/macintosh/macintosh.o DRIVERS-$(CONFIG_ALL_PPC) += drivers/macintosh/macintosh.o
DRIVERS-$(CONFIG_MAC) += drivers/macintosh/macintosh.o DRIVERS-$(CONFIG_MAC) += drivers/macintosh/macintosh.o
DRIVERS-$(CONFIG_ISAPNP) += drivers/pnp/pnp.o DRIVERS-$(CONFIG_ISAPNP) += drivers/pnp/pnp.o
DRIVERS-$(CONFIG_SGI_IP22) += drivers/sgi/sgi.a DRIVERS-$(CONFIG_SGI_IP22) += drivers/sgi/sgi.a
...@@ -174,7 +174,7 @@ DRIVERS-$(CONFIG_INPUT) += drivers/input/inputdrv.o ...@@ -174,7 +174,7 @@ DRIVERS-$(CONFIG_INPUT) += drivers/input/inputdrv.o
DRIVERS-$(CONFIG_I2O) += drivers/i2o/i2o.o DRIVERS-$(CONFIG_I2O) += drivers/i2o/i2o.o
DRIVERS-$(CONFIG_IRDA) += drivers/net/irda/irda.o DRIVERS-$(CONFIG_IRDA) += drivers/net/irda/irda.o
DRIVERS-$(CONFIG_I2C) += drivers/i2c/i2c.o DRIVERS-$(CONFIG_I2C) += drivers/i2c/i2c.o
DRIVERS-$(CONFIG_PHONE) += drivers/telephony/telephony.a DRIVERS-$(CONFIG_PHONE) += drivers/telephony/telephony.o
DRIVERS-$(CONFIG_ACPI_INTERPRETER) += drivers/acpi/acpi.o DRIVERS-$(CONFIG_ACPI_INTERPRETER) += drivers/acpi/acpi.o
DRIVERS += $(DRIVERS-y) DRIVERS += $(DRIVERS-y)
......
...@@ -21,6 +21,12 @@ ...@@ -21,6 +21,12 @@
/* /*
* See http://www.geocities.com/SiliconValley/Hardware/3165/ * See http://www.geocities.com/SiliconValley/Hardware/3165/
* for the user-level ACPI stuff * for the user-level ACPI stuff
*
* Changes:
* Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 2000/08/31
* - check copy*user return
* - get rid of check_region
* - get rid of verify_area
*/ */
#include <linux/config.h> #include <linux/config.h>
...@@ -135,8 +141,7 @@ static int acpi_do_stat(ctl_table *ctl, ...@@ -135,8 +141,7 @@ static int acpi_do_stat(ctl_table *ctl,
*len = 0; *len = 0;
return 0; return 0;
} }
copy_to_user(buffer, str, size); return copy_to_user(buffer, str, size) ? -EFAULT : 0;
return 0;
} }
static void cx_statistics(unsigned int x, unsigned long time) static void cx_statistics(unsigned int x, unsigned long time)
...@@ -1283,11 +1288,9 @@ static void acpi_power_off(void) ...@@ -1283,11 +1288,9 @@ static void acpi_power_off(void)
*/ */
static int acpi_claim(unsigned long start, unsigned long size) static int acpi_claim(unsigned long start, unsigned long size)
{ {
if (start && size) { if (start && size)
if (check_region(start, size)) if (!request_region(start, size, "acpi"))
return -EBUSY; return -EBUSY;
request_region(start, size, "acpi");
}
return 0; return 0;
} }
...@@ -1391,7 +1394,8 @@ static int acpi_do_ulong(ctl_table *ctl, ...@@ -1391,7 +1394,8 @@ static int acpi_do_ulong(ctl_table *ctl,
val = *(unsigned long*) ctl->data; val = *(unsigned long*) ctl->data;
size = sprintf(str, "0x%08lx\n", val); size = sprintf(str, "0x%08lx\n", val);
if (*len >= size) { if (*len >= size) {
copy_to_user(buffer, str, size); if (copy_to_user(buffer, str, size))
return -EFAULT;
*len = size; *len = size;
} }
else else
...@@ -1404,7 +1408,8 @@ static int acpi_do_ulong(ctl_table *ctl, ...@@ -1404,7 +1408,8 @@ static int acpi_do_ulong(ctl_table *ctl,
size = sizeof(str) - 1; size = sizeof(str) - 1;
if (size > *len) if (size > *len)
size = *len; size = *len;
copy_from_user(str, buffer, size); if (copy_from_user(str, buffer, size))
return -EFAULT;
str[size] = '\0'; str[size] = '\0';
val = simple_strtoul(str, &strend, 0); val = simple_strtoul(str, &strend, 0);
if (strend == str) if (strend == str)
...@@ -1423,22 +1428,22 @@ static int acpi_verify_table(void *buffer, ...@@ -1423,22 +1428,22 @@ static int acpi_verify_table(void *buffer,
size_t size, size_t size,
struct acpi_table_info *info) struct acpi_table_info *info)
{ {
struct acpi_table hdr;
size_t table_size;
if (size < sizeof(struct acpi_table)) if (size < sizeof(struct acpi_table))
return -EINVAL; return -EINVAL;
else if (verify_area(VERIFY_READ, buffer, size))
if (copy_from_user(&hdr, buffer, sizeof(hdr)))
return -EFAULT; return -EFAULT;
else {
struct acpi_table hdr;
size_t table_size;
copy_from_user(&hdr, buffer, sizeof(hdr)); table_size = (size_t) hdr.length;
table_size = (size_t) hdr.length; if (hdr.signature != info->expected_signature
if (hdr.signature != info->expected_signature || table_size < size
|| table_size < size || (info->expected_size
|| (info->expected_size && table_size != info->expected_size))
&& table_size != info->expected_size)) return -EINVAL;
return -EINVAL;
}
return 0; return 0;
} }
...@@ -1496,7 +1501,8 @@ static int acpi_do_table(ctl_table *ctl, ...@@ -1496,7 +1501,8 @@ static int acpi_do_table(ctl_table *ctl,
error = acpi_verify_table(buffer, *len, info); error = acpi_verify_table(buffer, *len, info);
if (error) if (error)
return error; return error;
copy_from_user(&hdr, buffer, sizeof(hdr)); if (copy_from_user(&hdr, buffer, sizeof(hdr)))
return -EFAULT;
table_size = (size_t) hdr.length; table_size = (size_t) hdr.length;
write_lock(&acpi_do_table_lock); write_lock(&acpi_do_table_lock);
...@@ -1517,7 +1523,8 @@ static int acpi_do_table(ctl_table *ctl, ...@@ -1517,7 +1523,8 @@ static int acpi_do_table(ctl_table *ctl,
error = -ENOMEM; error = -ENOMEM;
} }
if (data) if (data)
copy_from_user(data, buffer, size); if (copy_from_user(data, buffer, size))
error = -EFAULT;
write_unlock(&acpi_do_table_lock); write_unlock(&acpi_do_table_lock);
} }
...@@ -1565,7 +1572,8 @@ static int acpi_do_event_reg(ctl_table *ctl, ...@@ -1565,7 +1572,8 @@ static int acpi_do_event_reg(ctl_table *ctl,
size = sprintf(str, "0x%08x\n", val); size = sprintf(str, "0x%08x\n", val);
if (*len >= size) { if (*len >= size) {
copy_to_user(buffer, str, size); if (copy_to_user(buffer, str, size))
return -EFAULT;
*len = size; *len = size;
} }
else else
...@@ -1580,7 +1588,8 @@ static int acpi_do_event_reg(ctl_table *ctl, ...@@ -1580,7 +1588,8 @@ static int acpi_do_event_reg(ctl_table *ctl,
size = sizeof(str) - 1; size = sizeof(str) - 1;
if (size > *len) if (size > *len)
size = *len; size = *len;
copy_from_user(str, buffer, size); if (copy_from_user(str, buffer, size))
return -EFAULT;
str[size] = '\0'; str[size] = '\0';
val = (u32) simple_strtoul(str, &strend, 0); val = (u32) simple_strtoul(str, &strend, 0);
if (strend == str) if (strend == str)
...@@ -1682,7 +1691,8 @@ static int acpi_do_event(ctl_table *ctl, ...@@ -1682,7 +1691,8 @@ static int acpi_do_event(ctl_table *ctl,
pm1_status, pm1_status,
gpe_status, gpe_status,
event_state); event_state);
copy_to_user(buffer, str, size); if (copy_to_user(buffer, str, size))
return -EFAULT;
*len = size; *len = size;
file->f_pos += size; file->f_pos += size;
......
...@@ -11,12 +11,15 @@ if [ "$CONFIG_NET_ETHERNET" = "y" ]; then ...@@ -11,12 +11,15 @@ if [ "$CONFIG_NET_ETHERNET" = "y" ]; then
bool 'Ethernet on SCC2' CONFIG_SCC2_ENET bool 'Ethernet on SCC2' CONFIG_SCC2_ENET
fi fi
fi fi
bool 'FCC Ethernet' CONFIG_FCC_ENET #
if [ "$CONFIG_FCC_ENET" = "y" ]; then # CONFIG_FEC_ENET is only used to get netdevices to call our init
bool 'Ethernet on FCC1' CONFIG_FCC1_ENET # function. Any combination of FCC1,2,3 are supported.
if [ "$CONFIG_FCC1_ENET" != "y" ]; then #
bool 'Ethernet on FCC2' CONFIG_FCC2_ENET bool 'FCC Ethernet' CONFIG_FEC_ENET
fi if [ "$CONFIG_FEC_ENET" = "y" ]; then
bool 'Ethernet on FCC1' CONFIG_FCC1_ENET
bool 'Ethernet on FCC2' CONFIG_FCC2_ENET
bool 'Ethernet on FCC3' CONFIG_FCC3_ENET
fi fi
endmenu endmenu
fi fi
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
O_TARGET := 8260_io.a O_TARGET := 8260_io.a
O_OBJS = commproc.o uart.o O_OBJS = commproc.o uart.o
ifdef CONFIG_FCC_ENET ifdef CONFIG_FEC_ENET
O_OBJS += fcc.o O_OBJS += fcc_enet.o
endif endif
ifdef CONFIG_SCC_ENET ifdef CONFIG_SCC_ENET
O_OBJS += enet.o O_OBJS += enet.o
......
...@@ -69,17 +69,27 @@ m8260_cpm_reset(void) ...@@ -69,17 +69,27 @@ m8260_cpm_reset(void)
cpmp = (cpm8260_t *)commproc; cpmp = (cpm8260_t *)commproc;
} }
/* Allocate some memory from the dual ported ram. We may want to /* Allocate some memory from the dual ported ram.
* enforce alignment restrictions, but right now everyone is a good * To help protocols with object alignment restrictions, we do that
* citizen. * if they ask.
*/ */
uint uint
m8260_cpm_dpalloc(uint size) m8260_cpm_dpalloc(uint size, uint align)
{ {
uint retloc; uint retloc;
uint align_mask, off;
uint savebase;
if ((dp_alloc_base + size) >= dp_alloc_top) align_mask = align - 1;
savebase = dp_alloc_base;
if ((off = (dp_alloc_base & align_mask)) != 0)
dp_alloc_base += (align - off);
if ((dp_alloc_base + size) >= dp_alloc_top) {
dp_alloc_base = savebase;
return(CPM_DP_NOSPACE); return(CPM_DP_NOSPACE);
}
retloc = dp_alloc_base; retloc = dp_alloc_base;
dp_alloc_base += size; dp_alloc_base += size;
...@@ -91,12 +101,22 @@ m8260_cpm_dpalloc(uint size) ...@@ -91,12 +101,22 @@ m8260_cpm_dpalloc(uint size)
* UART "fifos" and the like. * UART "fifos" and the like.
*/ */
uint uint
m8260_cpm_hostalloc(uint size) m8260_cpm_hostalloc(uint size, uint align)
{ {
uint retloc; uint retloc;
uint align_mask, off;
uint savebase;
if ((host_buffer + size) >= host_end) align_mask = align - 1;
savebase = host_buffer;
if ((off = (host_buffer & align_mask)) != 0)
host_buffer += (align - off);
if ((host_buffer + size) >= host_end) {
host_buffer = savebase;
return(0); return(0);
}
retloc = host_buffer; retloc = host_buffer;
host_buffer += size; host_buffer += size;
......
...@@ -466,8 +466,11 @@ for (;;) { ...@@ -466,8 +466,11 @@ for (;;) {
cep->stats.rx_bytes += pkt_len; cep->stats.rx_bytes += pkt_len;
/* This does 16 byte alignment, much more than we need. /* This does 16 byte alignment, much more than we need.
*/ * The packet length includes FCS, but we don't want to
skb = dev_alloc_skb(pkt_len); * include that when passing upstream as it messes up
* bridging applications.
*/
skb = dev_alloc_skb(pkt_len-4);
if (skb == NULL) { if (skb == NULL) {
printk("%s: Memory squeeze, dropping packet.\n", dev->name); printk("%s: Memory squeeze, dropping packet.\n", dev->name);
...@@ -475,10 +478,10 @@ for (;;) { ...@@ -475,10 +478,10 @@ for (;;) {
} }
else { else {
skb->dev = dev; skb->dev = dev;
skb_put(skb,pkt_len); /* Make room */ skb_put(skb,pkt_len-4); /* Make room */
eth_copy_and_sum(skb, eth_copy_and_sum(skb,
(unsigned char *)__va(bdp->cbd_bufaddr), (unsigned char *)__va(bdp->cbd_bufaddr),
pkt_len, 0); pkt_len-4, 0);
skb->protocol=eth_type_trans(skb,dev); skb->protocol=eth_type_trans(skb,dev);
netif_rx(skb); netif_rx(skb);
} }
...@@ -549,10 +552,10 @@ static void set_multicast_list(struct net_device *dev) ...@@ -549,10 +552,10 @@ static void set_multicast_list(struct net_device *dev)
/* Log any net taps. */ /* Log any net taps. */
printk("%s: Promiscuous mode enabled.\n", dev->name); printk("%s: Promiscuous mode enabled.\n", dev->name);
cep->sccp->scc_pmsr |= SCC_PMSR_PRO; cep->sccp->scc_pmsr |= SCC_PSMR_PRO;
} else { } else {
cep->sccp->scc_pmsr &= ~SCC_PMSR_PRO; cep->sccp->scc_pmsr &= ~SCC_PSMR_PRO;
if (dev->flags & IFF_ALLMULTI) { if (dev->flags & IFF_ALLMULTI) {
/* Catch all multicast addresses, so set the /* Catch all multicast addresses, so set the
...@@ -678,11 +681,11 @@ int __init scc_enet_init(void) ...@@ -678,11 +681,11 @@ int __init scc_enet_init(void)
* These are relative offsets in the DP ram address space. * These are relative offsets in the DP ram address space.
* Initialize base addresses for the buffer descriptors. * Initialize base addresses for the buffer descriptors.
*/ */
i = m8260_cpm_dpalloc(sizeof(cbd_t) * RX_RING_SIZE); i = m8260_cpm_dpalloc(sizeof(cbd_t) * RX_RING_SIZE, 8);
ep->sen_genscc.scc_rbase = i; ep->sen_genscc.scc_rbase = i;
cep->rx_bd_base = (cbd_t *)&immap->im_dprambase[i]; cep->rx_bd_base = (cbd_t *)&immap->im_dprambase[i];
i = m8260_cpm_dpalloc(sizeof(cbd_t) * TX_RING_SIZE); i = m8260_cpm_dpalloc(sizeof(cbd_t) * TX_RING_SIZE, 8);
ep->sen_genscc.scc_tbase = i; ep->sen_genscc.scc_tbase = i;
cep->tx_bd_base = (cbd_t *)&immap->im_dprambase[i]; cep->tx_bd_base = (cbd_t *)&immap->im_dprambase[i];
...@@ -816,7 +819,7 @@ int __init scc_enet_init(void) ...@@ -816,7 +819,7 @@ int __init scc_enet_init(void)
/* Set processing mode. Use Ethernet CRC, catch broadcast, and /* Set processing mode. Use Ethernet CRC, catch broadcast, and
* start frame search 22 bit times after RENA. * start frame search 22 bit times after RENA.
*/ */
sccp->scc_pmsr = (SCC_PMSR_ENCRC | SCC_PMSR_NIB22); sccp->scc_pmsr = (SCC_PSMR_ENCRC | SCC_PSMR_NIB22);
/* It is now OK to enable the Ethernet transmitter. /* It is now OK to enable the Ethernet transmitter.
* Unfortunately, there are board implementation differences here. * Unfortunately, there are board implementation differences here.
......
This diff is collapsed.
...@@ -977,8 +977,7 @@ static int rs_8xx_write(struct tty_struct * tty, int from_user, ...@@ -977,8 +977,7 @@ static int rs_8xx_write(struct tty_struct * tty, int from_user,
} }
if (from_user) { if (from_user) {
if (c != if (copy_from_user(__va(bdp->cbd_bufaddr), buf, c)) {
copy_from_user(__va(bdp->cbd_bufaddr), buf, c)) {
if (!ret) if (!ret)
ret = -EFAULT; ret = -EFAULT;
break; break;
...@@ -2396,10 +2395,10 @@ int __init rs_8xx_init(void) ...@@ -2396,10 +2395,10 @@ int __init rs_8xx_init(void)
io->iop_pdird &= ~0x00800000; io->iop_pdird &= ~0x00800000;
io->iop_psord &= ~0x00c00000; io->iop_psord &= ~0x00c00000;
#if USE_SMC2 #if USE_SMC2
io->iop_ppara |= 0x01800000; io->iop_ppara |= 0x00c00000;
io->iop_pdira |= 0x00800000; io->iop_pdira |= 0x00400000;
io->iop_pdira &= ~0x01000000; io->iop_pdira &= ~0x00800000;
io->iop_psora &= ~0x01800000; io->iop_psora &= ~0x00c00000;
#endif #endif
/* Configure SCC2 and SCC3. Be careful about the fine print. /* Configure SCC2 and SCC3. Be careful about the fine print.
...@@ -2473,11 +2472,11 @@ int __init rs_8xx_init(void) ...@@ -2473,11 +2472,11 @@ int __init rs_8xx_init(void)
* descriptors from dual port ram, and a character * descriptors from dual port ram, and a character
* buffer area from host mem. * buffer area from host mem.
*/ */
dp_addr = m8260_cpm_dpalloc(sizeof(cbd_t) * RX_NUM_FIFO); dp_addr = m8260_cpm_dpalloc(sizeof(cbd_t) * RX_NUM_FIFO, 8);
/* Allocate space for FIFOs in the host memory. /* Allocate space for FIFOs in the host memory.
*/ */
mem_addr = m8260_cpm_hostalloc(RX_NUM_FIFO * RX_BUF_SIZE); mem_addr = m8260_cpm_hostalloc(RX_NUM_FIFO * RX_BUF_SIZE, 1);
/* Set the physical address of the host memory /* Set the physical address of the host memory
* buffers in the buffer descriptors, and the * buffers in the buffer descriptors, and the
...@@ -2506,11 +2505,11 @@ int __init rs_8xx_init(void) ...@@ -2506,11 +2505,11 @@ int __init rs_8xx_init(void)
sup->scc_genscc.scc_rbase = dp_addr; sup->scc_genscc.scc_rbase = dp_addr;
} }
dp_addr = m8260_cpm_dpalloc(sizeof(cbd_t) * TX_NUM_FIFO); dp_addr = m8260_cpm_dpalloc(sizeof(cbd_t) * TX_NUM_FIFO, 8);
/* Allocate space for FIFOs in the host memory. /* Allocate space for FIFOs in the host memory.
*/ */
mem_addr = m8260_cpm_hostalloc(TX_NUM_FIFO * TX_BUF_SIZE); mem_addr = m8260_cpm_hostalloc(TX_NUM_FIFO * TX_BUF_SIZE, 1);
/* Set the physical address of the host memory /* Set the physical address of the host memory
* buffers in the buffer descriptors, and the * buffers in the buffer descriptors, and the
...@@ -2716,11 +2715,11 @@ static int __init serial_console_setup(struct console *co, char *options) ...@@ -2716,11 +2715,11 @@ static int __init serial_console_setup(struct console *co, char *options)
/* Allocate space for two buffer descriptors in the DP ram. /* Allocate space for two buffer descriptors in the DP ram.
*/ */
dp_addr = m8260_cpm_dpalloc(sizeof(cbd_t) * 2); dp_addr = m8260_cpm_dpalloc(sizeof(cbd_t) * 2, 8);
/* Allocate space for two 2 byte FIFOs in the host memory. /* Allocate space for two 2 byte FIFOs in the host memory.
*/ */
mem_addr = m8260_cpm_hostalloc(4); mem_addr = m8260_cpm_hostalloc(4, 1);
/* Set the physical address of the host memory buffers in /* Set the physical address of the host memory buffers in
* the buffer descriptors. * the buffer descriptors.
......
...@@ -484,8 +484,11 @@ for (;;) { ...@@ -484,8 +484,11 @@ for (;;) {
cep->stats.rx_bytes += pkt_len; cep->stats.rx_bytes += pkt_len;
/* This does 16 byte alignment, much more than we need. /* This does 16 byte alignment, much more than we need.
*/ * The packet length includes FCS, but we don't want to
skb = dev_alloc_skb(pkt_len); * include that when passing upstream as it messes up
* bridging applications.
*/
skb = dev_alloc_skb(pkt_len-4);
if (skb == NULL) { if (skb == NULL) {
printk("%s: Memory squeeze, dropping packet.\n", dev->name); printk("%s: Memory squeeze, dropping packet.\n", dev->name);
...@@ -493,10 +496,10 @@ for (;;) { ...@@ -493,10 +496,10 @@ for (;;) {
} }
else { else {
skb->dev = dev; skb->dev = dev;
skb_put(skb,pkt_len); /* Make room */ skb_put(skb,pkt_len-4); /* Make room */
eth_copy_and_sum(skb, eth_copy_and_sum(skb,
(unsigned char *)__va(bdp->cbd_bufaddr), (unsigned char *)__va(bdp->cbd_bufaddr),
pkt_len, 0); pkt_len-4, 0);
skb->protocol=eth_type_trans(skb,dev); skb->protocol=eth_type_trans(skb,dev);
netif_rx(skb); netif_rx(skb);
} }
......
...@@ -669,18 +669,21 @@ while (!(bdp->cbd_sc & BD_ENET_RX_EMPTY)) { ...@@ -669,18 +669,21 @@ while (!(bdp->cbd_sc & BD_ENET_RX_EMPTY)) {
#endif #endif
/* This does 16 byte alignment, exactly what we need. /* This does 16 byte alignment, exactly what we need.
* The packet length includes FCS, but we don't want to
* include that when passing upstream as it messes up
* bridging applications.
*/ */
skb = dev_alloc_skb(pkt_len); skb = dev_alloc_skb(pkt_len-4);
if (skb == NULL) { if (skb == NULL) {
printk("%s: Memory squeeze, dropping packet.\n", dev->name); printk("%s: Memory squeeze, dropping packet.\n", dev->name);
fep->stats.rx_dropped++; fep->stats.rx_dropped++;
} else { } else {
skb->dev = dev; skb->dev = dev;
skb_put(skb,pkt_len); /* Make room */ skb_put(skb,pkt_len-4); /* Make room */
eth_copy_and_sum(skb, eth_copy_and_sum(skb,
(unsigned char *)__va(bdp->cbd_bufaddr), (unsigned char *)__va(bdp->cbd_bufaddr),
pkt_len, 0); pkt_len-4, 0);
skb->protocol=eth_type_trans(skb,dev); skb->protocol=eth_type_trans(skb,dev);
netif_rx(skb); netif_rx(skb);
} }
......
...@@ -67,11 +67,13 @@ initrd.o: ramdisk.image.gz piggyback ...@@ -67,11 +67,13 @@ initrd.o: ramdisk.image.gz piggyback
zImage: $(OBJS) no_initrd.o addnote zImage: $(OBJS) no_initrd.o addnote
$(LD) $(LD_ARGS) -o $@ $(OBJS) no_initrd.o $(LIBS) $(LD) $(LD_ARGS) -o $@ $(OBJS) no_initrd.o $(LIBS)
./addnote $@ cp $@ $@.rs6k
./addnote $@.rs6k
zImage.initrd: $(OBJS) initrd.o addnote zImage.initrd: $(OBJS) initrd.o addnote
$(LD) $(LD_ARGS) -o $@ $(OBJS) initrd.o $(LIBS) $(LD) $(LD_ARGS) -o $@ $(OBJS) initrd.o $(LIBS)
./addnote $@ cp $@ $@.rs6k
./addnote $@.rs6k
else else
znetboot: znetboot:
......
...@@ -22,12 +22,23 @@ char arch[] = "PowerPC"; ...@@ -22,12 +22,23 @@ char arch[] = "PowerPC";
#define N_DESCR 6 #define N_DESCR 6
unsigned int descr[N_DESCR] = { unsigned int descr[N_DESCR] = {
#if 1
/* values for IBM RS/6000 machines */
0xffffffff, /* real-mode = true */ 0xffffffff, /* real-mode = true */
0x00c00000, /* real-base, i.e. where we expect OF to be */ 0x00c00000, /* real-base, i.e. where we expect OF to be */
0xffffffff, /* real-size */ 0xffffffff, /* real-size */
0xffffffff, /* virt-base */ 0xffffffff, /* virt-base */
0xffffffff, /* virt-size */ 0xffffffff, /* virt-size */
0x4000, /* load-base */ 0x4000, /* load-base */
#else
/* values for longtrail CHRP */
0, /* real-mode = false */
0xffffffff, /* real-base */
0xffffffff, /* real-size */
0xffffffff, /* virt-base */
0xffffffff, /* virt-size */
0x00600000, /* load-base */
#endif
}; };
unsigned char buf[512]; unsigned char buf[512];
...@@ -63,7 +74,7 @@ unsigned char buf[512]; ...@@ -63,7 +74,7 @@ unsigned char buf[512];
unsigned char elf_magic[4] = { 0x7f, 'E', 'L', 'F' }; unsigned char elf_magic[4] = { 0x7f, 'E', 'L', 'F' };
main(int ac, char **av) int main(int ac, char **av)
{ {
int fd, n, i; int fd, n, i;
int ph, ps, np; int ph, ps, np;
......
...@@ -8,7 +8,7 @@ HOSTCFLAGS = -O -I$(TOPDIR)/include ...@@ -8,7 +8,7 @@ HOSTCFLAGS = -O -I$(TOPDIR)/include
CFLAGS = $(CPPFLAGS) -O -fno-builtin CFLAGS = $(CPPFLAGS) -O -fno-builtin
OBJCOPY_ARGS = -O aixcoff-rs6000 -R .stab -R .stabstr -R .comment OBJCOPY_ARGS = -O aixcoff-rs6000 -R .stab -R .stabstr -R .comment
COFF_LD_ARGS = -e _start -T ld.script -Ttext 500000 -Tdata 510000 -Bstatic COFF_LD_ARGS = -e _start -T ld.script -Ttext 500000 -Tdata 510000 -Bstatic
CHRP_LD_ARGS = -Ttext 0x00400000 CHRP_LD_ARGS = -Ttext 0x01000000
COFFOBJS = coffcrt0.o start.o coffmain.o misc.o string.o zlib.o image.o COFFOBJS = coffcrt0.o start.o coffmain.o misc.o string.o zlib.o image.o
CHRPOBJS = crt0.o start.o chrpmain.o misc.o string.o zlib.o image.o CHRPOBJS = crt0.o start.o chrpmain.o misc.o string.o zlib.o image.o
......
...@@ -22,13 +22,18 @@ void stop_imac_usb(void); ...@@ -22,13 +22,18 @@ void stop_imac_usb(void);
#define get_16be(x) (*(unsigned short *)(x)) #define get_16be(x) (*(unsigned short *)(x))
#define get_32be(x) (*(unsigned *)(x)) #define get_32be(x) (*(unsigned *)(x))
#define RAM_START 0x00000000 #define RAM_END (16 << 20)
#define RAM_END (8<<20)
#define PROG_START 0x00010000 #define PROG_START 0x00010000
#define PROG_SIZE 0x003f0000
#define SCRATCH_SIZE (128 << 10)
char *avail_ram; char *avail_ram;
char *end_avail; char *begin_avail, *end_avail;
char *avail_high;
unsigned int heap_use;
unsigned int heap_max;
extern char _end[]; extern char _end[];
extern char image_data[]; extern char image_data[];
...@@ -60,29 +65,30 @@ boot(int a1, int a2, void *prom) ...@@ -60,29 +65,30 @@ boot(int a1, int a2, void *prom)
im = image_data; im = image_data;
len = image_len; len = image_len;
/* claim 3MB starting at PROG_START */ /* claim 3MB starting at PROG_START */
claim(PROG_START, 3 << 20, 0); claim(PROG_START, PROG_SIZE, 0);
dst = (void *) PROG_START; dst = (void *) PROG_START;
if (im[0] == 0x1f && im[1] == 0x8b) { if (im[0] == 0x1f && im[1] == 0x8b) {
/* claim 512kB for scratch space */ /* claim some memory for scratch space */
avail_ram = (char *) claim(0, 512 << 10, 0x10); avail_ram = (char *) claim(0, SCRATCH_SIZE, 0x10);
end_avail = avail_ram + (512 << 10); begin_avail = avail_high = avail_ram;
printf("avail_ram = %x\n", avail_ram); end_avail = avail_ram + SCRATCH_SIZE;
printf("heap at 0x%x\n", avail_ram);
printf("gunzipping (0x%x <- 0x%x:0x%0x)...", dst, im, im+len); printf("gunzipping (0x%x <- 0x%x:0x%0x)...", dst, im, im+len);
gunzip(dst, 3 << 20, im, &len); gunzip(dst, PROG_SIZE, im, &len);
printf("done %u bytes\n", len); printf("done %u bytes\n", len);
printf("%u bytes of heap consumed, max in use %u\n",
avail_high - begin_avail, heap_max);
} else { } else {
memmove(dst, im, len); memmove(dst, im, len);
} }
flush_cache(dst, len); flush_cache(dst, len);
stop_imac_ethernet();
stop_imac_usb();
make_bi_recs((unsigned long) dst + len); make_bi_recs((unsigned long) dst + len);
sa = (unsigned long)PROG_START; sa = (unsigned long)PROG_START;
printf("start address = 0x%x\n", sa); printf("start address = 0x%x\n", sa);
(*(void (*)())sa)(0, 0, prom, a1, a2); (*(void (*)())sa)(a1, a2, prom);
printf("returned?\n"); printf("returned?\n");
...@@ -122,6 +128,7 @@ void make_bi_recs(unsigned long addr) ...@@ -122,6 +128,7 @@ void make_bi_recs(unsigned long addr)
rec = (struct bi_record *)((unsigned long)rec + rec->size); rec = (struct bi_record *)((unsigned long)rec + rec->size);
} }
#if 0
#define eieio() asm volatile("eieio"); #define eieio() asm volatile("eieio");
void stop_imac_ethernet(void) void stop_imac_ethernet(void)
...@@ -172,14 +179,35 @@ void stop_imac_usb(void) ...@@ -172,14 +179,35 @@ void stop_imac_usb(void)
*usb_ctrl = 0x01000000; /* cpu_to_le32(1) */ *usb_ctrl = 0x01000000; /* cpu_to_le32(1) */
eieio(); eieio();
} }
#endif
struct memchunk {
unsigned int size;
struct memchunk *next;
};
static struct memchunk *freechunks;
void *zalloc(void *x, unsigned items, unsigned size) void *zalloc(void *x, unsigned items, unsigned size)
{ {
void *p = avail_ram; void *p;
struct memchunk **mpp, *mp;
size *= items; size *= items;
size = (size + 7) & -8; size = (size + 7) & -8;
heap_use += size;
if (heap_use > heap_max)
heap_max = heap_use;
for (mpp = &freechunks; (mp = *mpp) != 0; mpp = &mp->next) {
if (mp->size == size) {
*mpp = mp->next;
return mp;
}
}
p = avail_ram;
avail_ram += size; avail_ram += size;
if (avail_ram > avail_high)
avail_high = avail_ram;
if (avail_ram > end_avail) { if (avail_ram > end_avail) {
printf("oops... out of memory\n"); printf("oops... out of memory\n");
pause(); pause();
...@@ -189,6 +217,17 @@ void *zalloc(void *x, unsigned items, unsigned size) ...@@ -189,6 +217,17 @@ void *zalloc(void *x, unsigned items, unsigned size)
void zfree(void *x, void *addr, unsigned nb) void zfree(void *x, void *addr, unsigned nb)
{ {
struct memchunk *mp = addr;
nb = (nb + 7) & -8;
heap_use -= nb;
if (avail_ram == addr + nb) {
avail_ram = addr;
return;
}
mp->size = nb;
mp->next = freechunks;
freechunks = mp;
} }
#define HEAD_CRC 2 #define HEAD_CRC 2
......
...@@ -88,11 +88,15 @@ fi ...@@ -88,11 +88,15 @@ fi
if [ "$CONFIG_4xx" = "y" -o "$CONFIG_8xx" = "y" ]; then if [ "$CONFIG_4xx" = "y" -o "$CONFIG_8xx" = "y" ]; then
bool 'Math emulation' CONFIG_MATH_EMULATION bool 'Math emulation' CONFIG_MATH_EMULATION
fi fi
endmenu endmenu
mainmenu_option next_comment mainmenu_option next_comment
comment 'General setup' comment 'General setup'
bool 'High memory support (experimental)' CONFIG_HIGHMEM
bool 'Mac-on-Linux support' CONFIG_MOL
define_bool CONFIG_ISA n define_bool CONFIG_ISA n
define_bool CONFIG_SBUS n define_bool CONFIG_SBUS n
...@@ -140,20 +144,6 @@ if [ "$CONFIG_4xx" != "y" -a "$CONFIG_8xx" != "y" ]; then ...@@ -140,20 +144,6 @@ if [ "$CONFIG_4xx" != "y" -a "$CONFIG_8xx" != "y" ]; then
bool 'Backward compatibility mode for Xpmac' CONFIG_FB_COMPAT_XPMAC bool 'Backward compatibility mode for Xpmac' CONFIG_FB_COMPAT_XPMAC
fi fi
bool 'Power management support for PowerBooks' CONFIG_PMAC_PBOOK
bool 'Support for PowerMac floppy' CONFIG_MAC_FLOPPY
tristate 'Support for PowerMac serial ports' CONFIG_MAC_SERIAL
if [ "$CONFIG_MAC_SERIAL" = "y" ]; then
bool ' Support for console on serial port' CONFIG_SERIAL_CONSOLE
fi
bool 'Apple Desktop Bus (ADB) support' CONFIG_ADB
if [ "$CONFIG_ADB" = "y" ]; then
bool ' Include CUDA ADB driver' CONFIG_ADB_CUDA
bool ' Include MacIO ADB driver' CONFIG_ADB_MACIO
bool ' Include PMU (Powerbook) ADB driver' CONFIG_ADB_PMU
bool 'Support for ADB keyboard' CONFIG_ADB_KEYBOARD
bool 'Support for ADB mouse' CONFIG_ADBMOUSE
fi
tristate 'Support for /dev/rtc' CONFIG_PPC_RTC tristate 'Support for /dev/rtc' CONFIG_PPC_RTC
bool 'Support for Open Firmware device tree in /proc' CONFIG_PROC_DEVICETREE bool 'Support for Open Firmware device tree in /proc' CONFIG_PROC_DEVICETREE
bool 'Support for early boot text console (BootX only)' CONFIG_BOOTX_TEXT bool 'Support for early boot text console (BootX only)' CONFIG_BOOTX_TEXT
...@@ -192,7 +182,6 @@ endmenu ...@@ -192,7 +182,6 @@ endmenu
source drivers/mtd/Config.in source drivers/mtd/Config.in
source drivers/pnp/Config.in source drivers/pnp/Config.in
source drivers/block/Config.in source drivers/block/Config.in
#source drivers.new/Config.in
if [ "$CONFIG_NET" = "y" ]; then if [ "$CONFIG_NET" = "y" ]; then
source net/Config.in source net/Config.in
...@@ -262,6 +251,43 @@ comment 'Console drivers' ...@@ -262,6 +251,43 @@ comment 'Console drivers'
source drivers/video/Config.in source drivers/video/Config.in
endmenu endmenu
source drivers/input/Config.in
mainmenu_option next_comment
comment 'Macintosh device drivers'
if [ "$CONFIG_ALL_PPC" = "y" ]; then
# we want to change this to something like CONFIG_SYSCTRL_CUDA/PMU
bool 'Support for CUDA based PowerMacs' CONFIG_ADB_CUDA
bool 'Support for PMU based PowerMacs' CONFIG_ADB_PMU
if [ "$CONFIG_ADB_PMU" = "y" ]; then
bool ' Power management support for PowerBooks' CONFIG_PMAC_PBOOK
# made a separate option since backlight may end up beeing used
# on non-powerbook machines (but only on PMU based ones AFAIK)
bool ' Backlight control for LCD screens' CONFIG_PMAC_BACKLIGHT
fi
bool 'Support for PowerMac floppy' CONFIG_MAC_FLOPPY
tristate 'Support for PowerMac serial ports' CONFIG_MAC_SERIAL
if [ "$CONFIG_MAC_SERIAL" = "y" ]; then
bool ' Support for console on serial port' CONFIG_SERIAL_CONSOLE
fi
bool 'Apple Desktop Bus (ADB) support' CONFIG_ADB
if [ "$CONFIG_ADB" = "y" ]; then
bool ' Include MacIO (CHRP) ADB driver' CONFIG_ADB_MACIO
fi
fi
if [ "$CONFIG_ADB" = "y" ]; then
dep_bool ' Use input layer for ADB devices' CONFIG_INPUT_ADBHID $CONFIG_INPUT
if [ "$CONFIG_INPUT_ADBHID" = "y" ]; then
define_bool CONFIG_MAC_HID y
bool ' Support for ADB raw keycodes' CONFIG_MAC_ADBKEYCODES
bool ' Support for mouse button 2+3 emulation' CONFIG_MAC_EMUMOUSEBTN
else
bool ' Support for ADB keyboard (old driver)' CONFIG_ADB_KEYBOARD
fi
fi
endmenu
source drivers/char/Config.in source drivers/char/Config.in
source drivers/media/Config.in source drivers/media/Config.in
...@@ -287,7 +313,6 @@ source arch/ppc/8260_io/Config.in ...@@ -287,7 +313,6 @@ source arch/ppc/8260_io/Config.in
fi fi
source drivers/usb/Config.in source drivers/usb/Config.in
source drivers/input/Config.in
mainmenu_option next_comment mainmenu_option next_comment
comment 'Kernel hacking' comment 'Kernel hacking'
......
This diff is collapsed.
...@@ -8,13 +8,19 @@ ...@@ -8,13 +8,19 @@
# #
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
#
# Loadable module support
#
# CONFIG_MODULES is not set
# #
# Platform support # Platform support
# #
CONFIG_PPC=y CONFIG_PPC=y
# CONFIG_6xx is not set # CONFIG_6xx is not set
# CONFIG_4xx is not set # CONFIG_4xx is not set
# CONFIG_PPC64BRIDGE is not set # CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
CONFIG_8260=y CONFIG_8260=y
# CONFIG_8xx is not set # CONFIG_8xx is not set
CONFIG_6xx=y CONFIG_6xx=y
...@@ -28,14 +34,10 @@ CONFIG_EST8260=y ...@@ -28,14 +34,10 @@ CONFIG_EST8260=y
# CONFIG_ALTIVEC is not set # CONFIG_ALTIVEC is not set
CONFIG_MACH_SPECIFIC=y CONFIG_MACH_SPECIFIC=y
#
# Loadable module support
#
# CONFIG_MODULES is not set
# #
# General setup # General setup
# #
# CONFIG_HIGHMEM is not set
# CONFIG_ISA is not set # CONFIG_ISA is not set
# CONFIG_SBUS is not set # CONFIG_SBUS is not set
# CONFIG_PCI is not set # CONFIG_PCI is not set
...@@ -56,14 +58,16 @@ CONFIG_KERNEL_ELF=y ...@@ -56,14 +58,16 @@ CONFIG_KERNEL_ELF=y
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
# CONFIG_VGA_CONSOLE is not set # CONFIG_VGA_CONSOLE is not set
# CONFIG_FB is not set # CONFIG_FB is not set
# CONFIG_PMAC_PBOOK is not set # CONFIG_PPC_RTC is not set
# CONFIG_MAC_FLOPPY is not set
# CONFIG_MAC_SERIAL is not set
# CONFIG_ADB is not set
# CONFIG_PROC_DEVICETREE is not set # CONFIG_PROC_DEVICETREE is not set
# CONFIG_BOOTX_TEXT is not set # CONFIG_BOOTX_TEXT is not set
# CONFIG_MOTOROLA_HOTSWAP is not set # CONFIG_MOTOROLA_HOTSWAP is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
# #
# Plug and Play configuration # Plug and Play configuration
# #
...@@ -84,8 +88,10 @@ CONFIG_BLK_DEV_LOOP=y ...@@ -84,8 +88,10 @@ CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set # CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID0 is not set
# CONFIG_RAID15_DANGEROUS is not set # CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
# #
...@@ -105,17 +111,11 @@ CONFIG_IP_MULTICAST=y ...@@ -105,17 +111,11 @@ CONFIG_IP_MULTICAST=y
CONFIG_IP_PNP=y CONFIG_IP_PNP=y
CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set # CONFIG_IP_PNP_RARP is not set
# CONFIG_IP_ROUTER is not set
# CONFIG_NET_IPIP is not set # CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set # CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set # CONFIG_IP_MROUTE is not set
CONFIG_IP_ALIAS=y # CONFIG_INET_ECN is not set
CONFIG_SYN_COOKIES=y CONFIG_SYN_COOKIES=y
#
# (it is safe to leave these untouched)
#
CONFIG_SKB_LARGE=y
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set # CONFIG_KHTTPD is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
...@@ -126,9 +126,9 @@ CONFIG_SKB_LARGE=y ...@@ -126,9 +126,9 @@ CONFIG_SKB_LARGE=y
# CONFIG_IPX is not set # CONFIG_IPX is not set
# CONFIG_ATALK is not set # CONFIG_ATALK is not set
# CONFIG_DECNET is not set # CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set # CONFIG_X25 is not set
# CONFIG_LAPB is not set # CONFIG_LAPB is not set
# CONFIG_BRIDGE is not set
# CONFIG_LLC is not set # CONFIG_LLC is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
...@@ -164,6 +164,7 @@ CONFIG_NETDEVICES=y ...@@ -164,6 +164,7 @@ CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set # CONFIG_DUMMY is not set
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set # CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set # CONFIG_ETHERTAP is not set
# CONFIG_NET_SB1000 is not set # CONFIG_NET_SB1000 is not set
...@@ -244,6 +245,15 @@ CONFIG_NET_ETHERNET=y ...@@ -244,6 +245,15 @@ CONFIG_NET_ETHERNET=y
# #
# CONFIG_FB is not set # CONFIG_FB is not set
#
# Input core support
#
# CONFIG_INPUT is not set
#
# Macintosh device drivers
#
# #
# Character devices # Character devices
# #
...@@ -269,19 +279,19 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -269,19 +279,19 @@ CONFIG_UNIX98_PTY_COUNT=256
# Joysticks # Joysticks
# #
# CONFIG_JOYSTICK is not set # CONFIG_JOYSTICK is not set
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set # CONFIG_QIC02_TAPE is not set
# #
# Watchdog Cards # Watchdog Cards
# #
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set # CONFIG_NVRAM is not set
# CONFIG_RTC is not set # CONFIG_RTC is not set
#
# Video For Linux
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DTLK is not set # CONFIG_DTLK is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
...@@ -290,9 +300,13 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -290,9 +300,13 @@ CONFIG_UNIX98_PTY_COUNT=256
# Ftape, the floppy tape device driver # Ftape, the floppy tape device driver
# #
# CONFIG_FTAPE is not set # CONFIG_FTAPE is not set
# CONFIG_DRM is not set
# CONFIG_DRM_TDFX is not set
# CONFIG_AGP is not set # CONFIG_AGP is not set
# CONFIG_DRM is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# #
# File systems # File systems
...@@ -310,6 +324,7 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -310,6 +324,7 @@ CONFIG_UNIX98_PTY_COUNT=256
# CONFIG_UMSDOS_FS is not set # CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set # CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set # CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_CRAMFS is not set # CONFIG_CRAMFS is not set
# CONFIG_RAMFS is not set # CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set # CONFIG_ISO9660_FS is not set
...@@ -369,6 +384,7 @@ CONFIG_PARTITION_ADVANCED=y ...@@ -369,6 +384,7 @@ CONFIG_PARTITION_ADVANCED=y
# CONFIG_MAC_PARTITION is not set # CONFIG_MAC_PARTITION is not set
# CONFIG_MSDOS_PARTITION is not set # CONFIG_MSDOS_PARTITION is not set
# CONFIG_SGI_PARTITION is not set # CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set # CONFIG_SUN_PARTITION is not set
# CONFIG_NLS is not set # CONFIG_NLS is not set
...@@ -382,7 +398,7 @@ CONFIG_PARTITION_ADVANCED=y ...@@ -382,7 +398,7 @@ CONFIG_PARTITION_ADVANCED=y
# #
CONFIG_SCC_ENET=y CONFIG_SCC_ENET=y
CONFIG_SCC1_ENET=y CONFIG_SCC1_ENET=y
# CONFIG_FCC_ENET is not set # CONFIG_FEC_ENET is not set
# #
# USB support # USB support
......
...@@ -14,14 +14,12 @@ CONFIG_EXPERIMENTAL=y ...@@ -14,14 +14,12 @@ CONFIG_EXPERIMENTAL=y
CONFIG_PPC=y CONFIG_PPC=y
CONFIG_6xx=y CONFIG_6xx=y
# CONFIG_4xx is not set # CONFIG_4xx is not set
# CONFIG_PPC64BRIDGE is not set # CONFIG_PPC64 is not set
# CONFIG_82xx is not set # CONFIG_8260 is not set
# CONFIG_8xx is not set # CONFIG_8xx is not set
# CONFIG_PMAC is not set
# CONFIG_PREP is not set
# CONFIG_CHRP is not set
# CONFIG_ALL_PPC is not set # CONFIG_ALL_PPC is not set
CONFIG_GEMINI=y CONFIG_GEMINI=y
# CONFIG_EST8260 is not set
# CONFIG_APUS is not set # CONFIG_APUS is not set
# CONFIG_SMP is not set # CONFIG_SMP is not set
CONFIG_ALTIVEC=y CONFIG_ALTIVEC=y
...@@ -37,7 +35,8 @@ CONFIG_KMOD=y ...@@ -37,7 +35,8 @@ CONFIG_KMOD=y
# #
# General setup # General setup
# #
# CONFIG_PCI is not set # CONFIG_ISA is not set
# CONFIG_SBUS is not set
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_NET=y CONFIG_NET=y
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
...@@ -47,8 +46,12 @@ CONFIG_KCORE_ELF=y ...@@ -47,8 +46,12 @@ CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set # CONFIG_BINFMT_MISC is not set
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set # CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
# CONFIG_VGA_CONSOLE is not set # CONFIG_VGA_CONSOLE is not set
# CONFIG_FB is not set # CONFIG_FB is not set
...@@ -57,7 +60,6 @@ CONFIG_KERNEL_ELF=y ...@@ -57,7 +60,6 @@ CONFIG_KERNEL_ELF=y
# CONFIG_MAC_SERIAL is not set # CONFIG_MAC_SERIAL is not set
# CONFIG_ADB is not set # CONFIG_ADB is not set
# CONFIG_PROC_DEVICETREE is not set # CONFIG_PROC_DEVICETREE is not set
# CONFIG_TOTALMP is not set
# CONFIG_BOOTX_TEXT is not set # CONFIG_BOOTX_TEXT is not set
# CONFIG_MOTOROLA_HOTSWAP is not set # CONFIG_MOTOROLA_HOTSWAP is not set
...@@ -70,22 +72,16 @@ CONFIG_KERNEL_ELF=y ...@@ -70,22 +72,16 @@ CONFIG_KERNEL_ELF=y
# Block devices # Block devices
# #
# CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_IDE is not set
# #
# Please see Documentation/ide.txt for help/info on IDE drives # Additional Block Devices
# #
# CONFIG_BLK_DEV_HD_ONLY is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_LVM is not set
# CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_MD is not set
# CONFIG_RAID15_DANGEROUS is not set
# CONFIG_BLK_DEV_RAM is not set # CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_HD is not set
# #
# Networking options # Networking options
...@@ -137,6 +133,13 @@ CONFIG_SKB_LARGE=y ...@@ -137,6 +133,13 @@ CONFIG_SKB_LARGE=y
# #
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
#
# ATA/IDE/MFM/RLL support
#
# CONFIG_IDE is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_HD is not set
# #
# SCSI support # SCSI support
# #
...@@ -148,7 +151,6 @@ CONFIG_SCSI=y ...@@ -148,7 +151,6 @@ CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40 CONFIG_SD_EXTRA_DEVS=40
# CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_ST is not set
CONFIG_ST_EXTRA_DEVS=2
CONFIG_BLK_DEV_SR=y CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_SR_EXTRA_DEVS=2 CONFIG_SR_EXTRA_DEVS=2
...@@ -171,7 +173,6 @@ CONFIG_SCSI_CONSTANTS=y ...@@ -171,7 +173,6 @@ CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_AHA1542 is not set # CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AHA1740 is not set # CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set # CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set # CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set # CONFIG_SCSI_AM53C974 is not set
...@@ -184,43 +185,22 @@ CONFIG_SCSI_CONSTANTS=y ...@@ -184,43 +185,22 @@ CONFIG_SCSI_CONSTANTS=y
# CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set # CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set # CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_SYM53C416 is not set # CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_SIM710 is not set # CONFIG_SCSI_SIM710 is not set
# CONFIG_SCSI_NCR53C7xx is not set # CONFIG_SCSI_NCR53C7xx_sync is not set
# CONFIG_SCSI_NCR53C8XX is not set # CONFIG_SCSI_NCR53C7xx_FAST is not set
CONFIG_SCSI_SYM53C8XX=y # CONFIG_SCSI_NCR53C7xx_DISCONNECT is not set
CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
CONFIG_SCSI_NCR53C8XX_SYNC=20
# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
# CONFIG_SCSI_PAS16 is not set # CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set # CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_PSI240I is not set # CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set # CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set # CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set # CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_MESH is not set # CONFIG_SCSI_MESH is not set
# CONFIG_SCSI_MAC53C94 is not set # CONFIG_SCSI_MAC53C94 is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
# #
# Network device support # Network device support
...@@ -232,6 +212,7 @@ CONFIG_NETDEVICES=y ...@@ -232,6 +212,7 @@ CONFIG_NETDEVICES=y
# #
# CONFIG_ARCNET is not set # CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set # CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set # CONFIG_EQUALIZER is not set
# CONFIG_ETHERTAP is not set # CONFIG_ETHERTAP is not set
# CONFIG_NET_SB1000 is not set # CONFIG_NET_SB1000 is not set
...@@ -249,12 +230,10 @@ CONFIG_NCR885E=y ...@@ -249,12 +230,10 @@ CONFIG_NCR885E=y
# CONFIG_LANCE is not set # CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set # CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set # CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_RTL8139 is not set
# CONFIG_DM9102 is not set
# CONFIG_AT1700 is not set # CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set # CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set # CONFIG_NET_ISA is not set
# CONFIG_NET_EISA is not set # CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set # CONFIG_NET_POCKET is not set
# #
...@@ -274,7 +253,7 @@ CONFIG_NCR885E=y ...@@ -274,7 +253,7 @@ CONFIG_NCR885E=y
# CONFIG_NET_RADIO is not set # CONFIG_NET_RADIO is not set
# #
# Token Ring driver support # Token Ring devices
# #
# CONFIG_TR is not set # CONFIG_TR is not set
# CONFIG_NET_FC is not set # CONFIG_NET_FC is not set
...@@ -291,6 +270,11 @@ CONFIG_NCR885E=y ...@@ -291,6 +270,11 @@ CONFIG_NCR885E=y
# #
# CONFIG_HAMRADIO is not set # CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
# #
# ISDN subsystem # ISDN subsystem
# #
...@@ -361,12 +345,7 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -361,12 +345,7 @@ CONFIG_UNIX98_PTY_COUNT=256
# CONFIG_AGP is not set # CONFIG_AGP is not set
# #
# USB support # File systems
#
# CONFIG_USB is not set
#
# Filesystems
# #
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
...@@ -378,12 +357,14 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -378,12 +357,14 @@ CONFIG_UNIX98_PTY_COUNT=256
# CONFIG_FAT_FS is not set # CONFIG_FAT_FS is not set
# CONFIG_EFS_FS is not set # CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set # CONFIG_CRAMFS is not set
# CONFIG_RAMFS is not set
CONFIG_ISO9660_FS=y CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set # CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_NTFS_FS is not set # CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set # CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
...@@ -397,6 +378,7 @@ CONFIG_EXT2_FS=y ...@@ -397,6 +378,7 @@ CONFIG_EXT2_FS=y
# #
# CONFIG_CODA_FS is not set # CONFIG_CODA_FS is not set
CONFIG_NFS_FS=y CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFSD is not set # CONFIG_NFSD is not set
CONFIG_SUNRPC=y CONFIG_SUNRPC=y
CONFIG_LOCKD=y CONFIG_LOCKD=y
...@@ -415,6 +397,11 @@ CONFIG_MSDOS_PARTITION=y ...@@ -415,6 +397,11 @@ CONFIG_MSDOS_PARTITION=y
# #
# CONFIG_SOUND is not set # CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
# #
# Kernel hacking # Kernel hacking
# #
......
...@@ -8,19 +8,28 @@ ...@@ -8,19 +8,28 @@
# #
CONFIG_EXPERIMENTAL=y CONFIG_EXPERIMENTAL=y
#
# Loadable module support
#
# CONFIG_MODULES is not set
# #
# Platform support # Platform support
# #
CONFIG_PPC=y CONFIG_PPC=y
# CONFIG_6xx is not set # CONFIG_6xx is not set
# CONFIG_4xx is not set # CONFIG_4xx is not set
# CONFIG_PPC64BRIDGE is not set # CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8260 is not set # CONFIG_8260 is not set
CONFIG_8xx=y CONFIG_8xx=y
CONFIG_SERIAL_CONSOLE=y CONFIG_SERIAL_CONSOLE=y
# CONFIG_RPXLITE is not set # CONFIG_RPXLITE is not set
CONFIG_RPXCLASSIC=y CONFIG_RPXCLASSIC=y
# CONFIG_BSEIP is not set # CONFIG_BSEIP is not set
# CONFIG_TQM8xxL is not set
# CONFIG_TQM860L is not set
# CONFIG_TQM860 is not set
# CONFIG_MBX is not set # CONFIG_MBX is not set
# CONFIG_WINCEPT is not set # CONFIG_WINCEPT is not set
# CONFIG_ALL_PPC is not set # CONFIG_ALL_PPC is not set
...@@ -28,14 +37,10 @@ CONFIG_RPXCLASSIC=y ...@@ -28,14 +37,10 @@ CONFIG_RPXCLASSIC=y
CONFIG_MACH_SPECIFIC=y CONFIG_MACH_SPECIFIC=y
CONFIG_MATH_EMULATION=y CONFIG_MATH_EMULATION=y
#
# Loadable module support
#
# CONFIG_MODULES is not set
# #
# General setup # General setup
# #
# CONFIG_HIGHMEM is not set
# CONFIG_ISA is not set # CONFIG_ISA is not set
# CONFIG_SBUS is not set # CONFIG_SBUS is not set
# CONFIG_PCI is not set # CONFIG_PCI is not set
...@@ -55,6 +60,11 @@ CONFIG_KERNEL_ELF=y ...@@ -55,6 +60,11 @@ CONFIG_KERNEL_ELF=y
# #
# CONFIG_PARPORT is not set # CONFIG_PARPORT is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
# #
# Plug and Play configuration # Plug and Play configuration
# #
...@@ -75,8 +85,10 @@ CONFIG_BLK_DEV_LOOP=y ...@@ -75,8 +85,10 @@ CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set # CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID0 is not set
# CONFIG_RAID15_DANGEROUS is not set # CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y CONFIG_BLK_DEV_INITRD=y
# #
...@@ -96,17 +108,11 @@ CONFIG_IP_MULTICAST=y ...@@ -96,17 +108,11 @@ CONFIG_IP_MULTICAST=y
CONFIG_IP_PNP=y CONFIG_IP_PNP=y
CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set # CONFIG_IP_PNP_RARP is not set
# CONFIG_IP_ROUTER is not set
# CONFIG_NET_IPIP is not set # CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set # CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set # CONFIG_IP_MROUTE is not set
CONFIG_IP_ALIAS=y # CONFIG_INET_ECN is not set
CONFIG_SYN_COOKIES=y CONFIG_SYN_COOKIES=y
#
# (it is safe to leave these untouched)
#
CONFIG_SKB_LARGE=y
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set # CONFIG_KHTTPD is not set
# CONFIG_ATM is not set # CONFIG_ATM is not set
...@@ -117,9 +123,9 @@ CONFIG_SKB_LARGE=y ...@@ -117,9 +123,9 @@ CONFIG_SKB_LARGE=y
# CONFIG_IPX is not set # CONFIG_IPX is not set
# CONFIG_ATALK is not set # CONFIG_ATALK is not set
# CONFIG_DECNET is not set # CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set # CONFIG_X25 is not set
# CONFIG_LAPB is not set # CONFIG_LAPB is not set
# CONFIG_BRIDGE is not set
# CONFIG_LLC is not set # CONFIG_LLC is not set
# CONFIG_ECONET is not set # CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set # CONFIG_WAN_ROUTER is not set
...@@ -155,6 +161,7 @@ CONFIG_NETDEVICES=y ...@@ -155,6 +161,7 @@ CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set # CONFIG_DUMMY is not set
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set # CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set # CONFIG_ETHERTAP is not set
# CONFIG_NET_SB1000 is not set # CONFIG_NET_SB1000 is not set
...@@ -235,6 +242,15 @@ CONFIG_NET_ETHERNET=y ...@@ -235,6 +242,15 @@ CONFIG_NET_ETHERNET=y
# #
# CONFIG_FB is not set # CONFIG_FB is not set
#
# Input core support
#
# CONFIG_INPUT is not set
#
# Macintosh device drivers
#
# #
# Character devices # Character devices
# #
...@@ -260,19 +276,19 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -260,19 +276,19 @@ CONFIG_UNIX98_PTY_COUNT=256
# Joysticks # Joysticks
# #
# CONFIG_JOYSTICK is not set # CONFIG_JOYSTICK is not set
#
# Input core support is needed for joysticks
#
# CONFIG_QIC02_TAPE is not set # CONFIG_QIC02_TAPE is not set
# #
# Watchdog Cards # Watchdog Cards
# #
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_INTEL_RNG is not set
# CONFIG_NVRAM is not set # CONFIG_NVRAM is not set
# CONFIG_RTC is not set # CONFIG_RTC is not set
#
# Video For Linux
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DTLK is not set # CONFIG_DTLK is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
...@@ -281,9 +297,13 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -281,9 +297,13 @@ CONFIG_UNIX98_PTY_COUNT=256
# Ftape, the floppy tape device driver # Ftape, the floppy tape device driver
# #
# CONFIG_FTAPE is not set # CONFIG_FTAPE is not set
# CONFIG_DRM is not set
# CONFIG_DRM_TDFX is not set
# CONFIG_AGP is not set # CONFIG_AGP is not set
# CONFIG_DRM is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# #
# File systems # File systems
...@@ -301,6 +321,7 @@ CONFIG_UNIX98_PTY_COUNT=256 ...@@ -301,6 +321,7 @@ CONFIG_UNIX98_PTY_COUNT=256
# CONFIG_UMSDOS_FS is not set # CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set # CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set # CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_CRAMFS is not set # CONFIG_CRAMFS is not set
# CONFIG_RAMFS is not set # CONFIG_RAMFS is not set
# CONFIG_ISO9660_FS is not set # CONFIG_ISO9660_FS is not set
...@@ -360,6 +381,7 @@ CONFIG_PARTITION_ADVANCED=y ...@@ -360,6 +381,7 @@ CONFIG_PARTITION_ADVANCED=y
# CONFIG_MAC_PARTITION is not set # CONFIG_MAC_PARTITION is not set
# CONFIG_MSDOS_PARTITION is not set # CONFIG_MSDOS_PARTITION is not set
# CONFIG_SGI_PARTITION is not set # CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set # CONFIG_SUN_PARTITION is not set
# CONFIG_NLS is not set # CONFIG_NLS is not set
...@@ -374,7 +396,9 @@ CONFIG_PARTITION_ADVANCED=y ...@@ -374,7 +396,9 @@ CONFIG_PARTITION_ADVANCED=y
CONFIG_SCC_ENET=y CONFIG_SCC_ENET=y
CONFIG_SCC1_ENET=y CONFIG_SCC1_ENET=y
CONFIG_FEC_ENET=y CONFIG_FEC_ENET=y
CONFIG_ENET_BIG_BUFFERS=y
CONFIG_8xxSMC2=y CONFIG_8xxSMC2=y
# CONFIG_8xx_ALTSMC2 is not set
CONFIG_8xxSCC=y CONFIG_8xxSCC=y
# #
......
This diff is collapsed.
...@@ -99,8 +99,10 @@ endif ...@@ -99,8 +99,10 @@ endif
ifeq ($(CONFIG_ALL_PPC),y) ifeq ($(CONFIG_ALL_PPC),y)
O_OBJS += pmac_pic.o pmac_setup.o pmac_time.o feature.o pmac_pci.o prom.o \ O_OBJS += pmac_pic.o pmac_setup.o pmac_time.o feature.o pmac_pci.o prom.o \
chrp_setup.o chrp_time.o chrp_pci.o open_pic.o indirect_pci.o \ chrp_setup.o chrp_time.o chrp_pci.o open_pic.o indirect_pci.o \
prep_pci.o i8259.o prep_nvram.o prep_time.o residual.o \ prep_pci.o i8259.o prep_nvram.o prep_time.o residual.o
pmac_backlight.o ifeq ($(CONFIG_PMAC_BACKLIGHT),y)
O_OBJS += pmac_backlight.o
endif
OX_OBJS += prep_setup.o OX_OBJS += prep_setup.o
endif endif
ifeq ($(CONFIG_GEMINI),y) ifeq ($(CONFIG_GEMINI),y)
......
...@@ -304,7 +304,7 @@ __apus ...@@ -304,7 +304,7 @@ __apus
void apus_calibrate_decr(void) void apus_calibrate_decr(void)
{ {
#ifdef CONFIG_APUS #ifdef CONFIG_APUS
int freq, divisor; unsigned long freq;
/* This algorithm for determining the bus speed was /* This algorithm for determining the bus speed was
contributed by Ralph Schmidt. */ contributed by Ralph Schmidt. */
...@@ -335,8 +335,8 @@ void apus_calibrate_decr(void) ...@@ -335,8 +335,8 @@ void apus_calibrate_decr(void)
bus_speed = 60; bus_speed = 60;
freq = 15000000; freq = 15000000;
} else if ((bus_speed >= 63) && (bus_speed < 69)) { } else if ((bus_speed >= 63) && (bus_speed < 69)) {
bus_speed = 66; bus_speed = 67;
freq = 16500000; freq = 16666667;
} else { } else {
printk ("APUS: Unable to determine bus speed (%d). " printk ("APUS: Unable to determine bus speed (%d). "
"Defaulting to 50MHz", bus_speed); "Defaulting to 50MHz", bus_speed);
...@@ -375,12 +375,10 @@ void apus_calibrate_decr(void) ...@@ -375,12 +375,10 @@ void apus_calibrate_decr(void)
} }
freq *= 60; /* try to make freq/1e6 an integer */ printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
divisor = 60; freq/1000000, freq%1000000);
printk("time_init: decrementer frequency = %d/%d\n", freq, divisor); tb_ticks_per_jiffy = freq / HZ;
decrementer_count = freq / HZ / divisor; tb_to_us = mulhwu_scale_factor(freq, 1000000);
count_period_num = divisor;
count_period_den = freq / 1000000;
__bus_speed = bus_speed; __bus_speed = bus_speed;
__speed_test_failed = speed_test_failed; __speed_test_failed = speed_test_failed;
......
...@@ -284,13 +284,38 @@ hydra_init(void) ...@@ -284,13 +284,38 @@ hydra_init(void)
return 1; return 1;
} }
#ifdef CONFIG_POWER4
static void
power4_fixup_dev(struct pci_dev *dev)
{
int i;
unsigned long offset;
for (i = 0; i < 6; ++i) {
if (dev->resource[i].start == 0)
continue;
offset = pci_address_offset(dev->bus->number,
dev->resource[i].flags);
if (offset) {
dev->resource[i].start += offset;
dev->resource[i].end += offset;
printk("device %x.%x[%d] now [%lx..%lx]\n",
dev->bus->number, dev->devfn, i,
dev->resource[i].start,
dev->resource[i].end);
}
/* zap the 2nd function of the winbond chip */
if (dev->resource[i].flags & IORESOURCE_IO
&& dev->bus->number == 0 && dev->devfn == 0x81)
dev->resource[i].flags &= ~IORESOURCE_IO;
}
}
#endif /* CONFIG_POWER4 */
void __init void __init
chrp_pcibios_fixup(void) chrp_pcibios_fixup(void)
{ {
struct pci_dev *dev; struct pci_dev *dev;
#ifdef CONFIG_POWER4
int i;
#endif
int *brp; int *brp;
struct device_node *np; struct device_node *np;
extern struct pci_ops generic_pci_ops; extern struct pci_ops generic_pci_ops;
...@@ -316,10 +341,8 @@ chrp_pcibios_fixup(void) ...@@ -316,10 +341,8 @@ chrp_pcibios_fixup(void)
/* PCI interrupts are controlled by the OpenPIC */ /* PCI interrupts are controlled by the OpenPIC */
pci_for_each_dev(dev) { pci_for_each_dev(dev) {
np = find_pci_device_OFnode(dev->bus->number, dev->devfn); np = find_pci_device_OFnode(dev->bus->number, dev->devfn);
if ( (np != 0) && (np->n_intrs > 0) && (np->intrs[0].line != 0)) if ((np != 0) && (np->n_intrs > 0) && (np->intrs[0].line != 0))
dev->irq = np->intrs[0].line; dev->irq = np->intrs[0].line;
if ( dev->irq )
dev->irq = openpic_to_irq( dev->irq );
/* these need to be absolute addrs for OF and Matrox FB -- Cort */ /* these need to be absolute addrs for OF and Matrox FB -- Cort */
if ( dev->vendor == PCI_VENDOR_ID_MATROX ) if ( dev->vendor == PCI_VENDOR_ID_MATROX )
{ {
...@@ -337,25 +360,7 @@ chrp_pcibios_fixup(void) ...@@ -337,25 +360,7 @@ chrp_pcibios_fixup(void)
dev->devfn, PCI_VENDOR_ID, PCI_VENDOR_ID_AMD); dev->devfn, PCI_VENDOR_ID, PCI_VENDOR_ID_AMD);
} }
#ifdef CONFIG_POWER4 #ifdef CONFIG_POWER4
for (i = 0; i < 6; ++i) { power4_fixup_dev(dev);
unsigned long offset;
if (dev->resource[i].start == 0)
continue;
offset = pci_address_offset(dev->bus->number,
dev->resource[i].flags);
if (offset) {
dev->resource[i].start += offset;
dev->resource[i].end += offset;
printk("device %x.%x[%d] now [%lx..%lx]\n",
dev->bus->number, dev->devfn, i,
dev->resource[i].start,
dev->resource[i].end);
}
/* zap the 2nd function of the winbond chip */
if (dev->resource[i].flags & IORESOURCE_IO
&& dev->bus->number == 0 && dev->devfn == 0x81)
dev->resource[i].flags &= ~IORESOURCE_IO;
}
#else #else
if (dev->bus->number > 0 && python_busnr > 0) if (dev->bus->number > 0 && python_busnr > 0)
dev->resource[0].start += dev->bus->number*0x01000000; dev->resource[0].start += dev->bus->number*0x01000000;
...@@ -363,6 +368,40 @@ chrp_pcibios_fixup(void) ...@@ -363,6 +368,40 @@ chrp_pcibios_fixup(void)
} }
} }
static struct {
/* parent is iomem */
struct resource ram, pci_mem, isa_mem, pci_io, pci_cfg, rom_exp, flash;
/* parent is isa_mem */
struct resource nvram;
} gg2_resources = {
ram: { "RAM", 0x00000000, 0xbfffffff, IORESOURCE_MEM },
pci_mem: { "GG2 PCI mem", 0xc0000000, 0xf6ffffff, IORESOURCE_MEM },
isa_mem: { "GG2 ISA mem", 0xf7000000, 0xf7ffffff },
pci_io: { "GG2 PCI I/O", 0xf8000000, 0xf8ffffff },
pci_cfg: { "GG2 PCI cfg", 0xfec00000, 0xfec7ffff },
rom_exp: { "ROM exp", 0xff000000, 0xff7fffff, },
flash: { "Flash ROM", 0xfff80000, 0xffffffff },
nvram: { "NVRAM", 0xf70e0000, 0xf70e7fff },
};
static void __init gg2_pcibios_fixup(void)
{
int i;
extern unsigned long *end_of_DRAM;
chrp_pcibios_fixup();
gg2_resources.ram.end = (unsigned long)end_of_DRAM-PAGE_OFFSET;
for (i = 0; i < 7; i++)
request_resource(&iomem_resource,
&((struct resource *)&gg2_resources)[i]);
request_resource(&gg2_resources.isa_mem, &gg2_resources.nvram);
}
static void __init gg2_pcibios_fixup_bus(struct pci_bus *bus)
{
bus->resource[1] = &gg2_resources.pci_mem;
}
decl_config_access_method(grackle); decl_config_access_method(grackle);
decl_config_access_method(indirect); decl_config_access_method(indirect);
decl_config_access_method(rtas); decl_config_access_method(rtas);
...@@ -372,6 +411,7 @@ chrp_setup_pci_ptrs(void) ...@@ -372,6 +411,7 @@ chrp_setup_pci_ptrs(void)
{ {
struct device_node *py; struct device_node *py;
ppc_md.pcibios_fixup = chrp_pcibios_fixup;
#ifdef CONFIG_POWER4 #ifdef CONFIG_POWER4
set_config_access_method(rtas); set_config_access_method(rtas);
pci_dram_offset = 0; pci_dram_offset = 0;
...@@ -428,16 +468,17 @@ chrp_setup_pci_ptrs(void) ...@@ -428,16 +468,17 @@ chrp_setup_pci_ptrs(void)
} }
else else
{ {
/* LongTrail */
pci_dram_offset = 0; pci_dram_offset = 0;
isa_mem_base = 0xf7000000; isa_mem_base = 0xf7000000;
isa_io_base = 0xf8000000; isa_io_base = 0xf8000000;
set_config_access_method(gg2); set_config_access_method(gg2);
ppc_md.pcibios_fixup = gg2_pcibios_fixup;
ppc_md.pcibios_fixup_bus = gg2_pcibios_fixup_bus;
} }
} }
} }
#endif /* CONFIG_POWER4 */ #endif /* CONFIG_POWER4 */
ppc_md.pcibios_fixup = chrp_pcibios_fixup;
} }
#ifdef CONFIG_PPC64BRIDGE #ifdef CONFIG_PPC64BRIDGE
......
This diff is collapsed.
...@@ -33,18 +33,20 @@ static int nvram_as1 = NVRAM_AS1; ...@@ -33,18 +33,20 @@ static int nvram_as1 = NVRAM_AS1;
static int nvram_as0 = NVRAM_AS0; static int nvram_as0 = NVRAM_AS0;
static int nvram_data = NVRAM_DATA; static int nvram_data = NVRAM_DATA;
void __init chrp_time_init(void) long __init chrp_time_init(void)
{ {
struct device_node *rtcs; struct device_node *rtcs;
int base; int base;
rtcs = find_compatible_devices("rtc", "pnpPNP,b00"); rtcs = find_compatible_devices("rtc", "pnpPNP,b00");
if (rtcs == NULL || rtcs->addrs == NULL) if (rtcs == NULL || rtcs->addrs == NULL)
return; return 0;
base = rtcs->addrs[0].address; base = rtcs->addrs[0].address;
nvram_as1 = 0; nvram_as1 = 0;
nvram_as0 = base; nvram_as0 = base;
nvram_data = base + 1; nvram_data = base + 1;
return 0;
} }
int __chrp chrp_cmos_clock_read(int addr) int __chrp chrp_cmos_clock_read(int addr)
...@@ -116,28 +118,34 @@ int __chrp chrp_set_rtc_time(unsigned long nowtime) ...@@ -116,28 +118,34 @@ int __chrp chrp_set_rtc_time(unsigned long nowtime)
unsigned long __chrp chrp_get_rtc_time(void) unsigned long __chrp chrp_get_rtc_time(void)
{ {
unsigned int year, mon, day, hour, min, sec; unsigned int year, mon, day, hour, min, sec;
int i; int uip, i;
/* The Linux interpretation of the CMOS clock register contents: /* The Linux interpretation of the CMOS clock register contents:
* When the Update-In-Progress (UIP) flag goes from 1 to 0, the * When the Update-In-Progress (UIP) flag goes from 1 to 0, the
* RTC registers show the second which has precisely just started. * RTC registers show the second which has precisely just started.
* Let's hope other operating systems interpret the RTC the same way. * Let's hope other operating systems interpret the RTC the same way.
*/ */
/* read RTC exactly on falling edge of update flag */
for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */ /* Since the UIP flag is set for about 2.2 ms and the clock
if (chrp_cmos_clock_read(RTC_FREQ_SELECT) & RTC_UIP) * is typically written with a precision of 1 jiffy, trying
break; * to obtain a precision better than a few milliseconds is
for (i = 0 ; i < 1000000 ; i++) /* must try at least 2.228 ms */ * an illusion. Only consistency is interesting, this also
if (!(chrp_cmos_clock_read(RTC_FREQ_SELECT) & RTC_UIP)) * allows to use the routine for /dev/rtc without a potential
break; * 1 second kernel busy loop triggered by any reader of /dev/rtc.
do { /* Isn't this overkill ? UIP above should guarantee consistency */ */
for ( i = 0; i<1000000; i++) {
uip = chrp_cmos_clock_read(RTC_FREQ_SELECT);
sec = chrp_cmos_clock_read(RTC_SECONDS); sec = chrp_cmos_clock_read(RTC_SECONDS);
min = chrp_cmos_clock_read(RTC_MINUTES); min = chrp_cmos_clock_read(RTC_MINUTES);
hour = chrp_cmos_clock_read(RTC_HOURS); hour = chrp_cmos_clock_read(RTC_HOURS);
day = chrp_cmos_clock_read(RTC_DAY_OF_MONTH); day = chrp_cmos_clock_read(RTC_DAY_OF_MONTH);
mon = chrp_cmos_clock_read(RTC_MONTH); mon = chrp_cmos_clock_read(RTC_MONTH);
year = chrp_cmos_clock_read(RTC_YEAR); year = chrp_cmos_clock_read(RTC_YEAR);
} while (sec != chrp_cmos_clock_read(RTC_SECONDS)); uip |= chrp_cmos_clock_read(RTC_FREQ_SELECT);
if ((uip & RTC_UIP)==0) break;
}
if (!(chrp_cmos_clock_read(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD) if (!(chrp_cmos_clock_read(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD)
{ {
BCD_TO_BIN(sec); BCD_TO_BIN(sec);
...@@ -156,8 +164,7 @@ unsigned long __chrp chrp_get_rtc_time(void) ...@@ -156,8 +164,7 @@ unsigned long __chrp chrp_get_rtc_time(void)
void __init chrp_calibrate_decr(void) void __init chrp_calibrate_decr(void)
{ {
struct device_node *cpu; struct device_node *cpu;
int *fp, divisor; unsigned int freq, *fp;
unsigned long freq;
if (via_calibrate_decr()) if (via_calibrate_decr())
return; return;
...@@ -169,15 +176,13 @@ void __init chrp_calibrate_decr(void) ...@@ -169,15 +176,13 @@ void __init chrp_calibrate_decr(void)
freq = 16666000; /* hardcoded default */ freq = 16666000; /* hardcoded default */
cpu = find_type_devices("cpu"); cpu = find_type_devices("cpu");
if (cpu != 0) { if (cpu != 0) {
fp = (int *) get_property(cpu, "timebase-frequency", NULL); fp = (unsigned int *)
get_property(cpu, "timebase-frequency", NULL);
if (fp != 0) if (fp != 0)
freq = *fp; freq = *fp;
} }
freq *= 30; printk("time_init: decrementer frequency = %u.%.6u MHz\n",
divisor = 30; freq/1000000, freq%1000000);
printk("time_init: decrementer frequency = %lu/%d (%ld MHz)\n", freq, tb_ticks_per_jiffy = freq / HZ;
divisor, (freq/divisor)>>20); tb_to_us = mulhwu_scale_factor(freq, 1000000);
decrementer_count = freq / HZ / divisor;
count_period_num = divisor;
count_period_den = freq / 1000000;
} }
This diff is collapsed.
This diff is collapsed.
...@@ -336,7 +336,7 @@ void __init gemini_init_IRQ(void) ...@@ -336,7 +336,7 @@ void __init gemini_init_IRQ(void)
#define gemini_rtc_write(val,x) (writeb((val),(GEMINI_RTC+(x)))) #define gemini_rtc_write(val,x) (writeb((val),(GEMINI_RTC+(x))))
/* ensure that the RTC is up and running */ /* ensure that the RTC is up and running */
void __init gemini_time_init(void) long __init gemini_time_init(void)
{ {
unsigned char reg; unsigned char reg;
...@@ -347,6 +347,7 @@ void __init gemini_time_init(void) ...@@ -347,6 +347,7 @@ void __init gemini_time_init(void)
gemini_rtc_write((reg & ~(M48T35_RTC_STOPPED)), M48T35_RTC_CONTROL); gemini_rtc_write((reg & ~(M48T35_RTC_STOPPED)), M48T35_RTC_CONTROL);
gemini_rtc_write((reg | M48T35_RTC_SET), M48T35_RTC_CONTROL); gemini_rtc_write((reg | M48T35_RTC_SET), M48T35_RTC_CONTROL);
} }
return 0;
} }
#undef DEBUG_RTC #undef DEBUG_RTC
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/page.h> #include <asm/page.h>
#include <linux/config.h> #include <linux/config.h>
#include "mol.h"
/* /*
* Load a PTE into the hash table, if possible. * Load a PTE into the hash table, if possible.
...@@ -593,6 +594,11 @@ _GLOBAL(flush_hash_segments) ...@@ -593,6 +594,11 @@ _GLOBAL(flush_hash_segments)
* flush_hash_page(unsigned context, unsigned long va) * flush_hash_page(unsigned context, unsigned long va)
*/ */
_GLOBAL(flush_hash_page) _GLOBAL(flush_hash_page)
#ifdef CONFIG_MOL
mflr r10
MOL_HOOK_MMU(10, r6)
mtlr r10
#endif
lis r6,Hash@ha lis r6,Hash@ha
lwz r6,Hash@l(r6) /* hash table base */ lwz r6,Hash@l(r6) /* hash table base */
cmpwi 0,r6,0 /* hash table in use? */ cmpwi 0,r6,0 /* hash table in use? */
......
This diff is collapsed.
This diff is collapsed.
...@@ -286,6 +286,7 @@ void power_save(void) ...@@ -286,6 +286,7 @@ void power_save(void)
case 6: /* 603e */ case 6: /* 603e */
case 7: /* 603ev */ case 7: /* 603ev */
case 8: /* 750 */ case 8: /* 750 */
case 12: /* 7400 */
save_flags(msr); save_flags(msr);
__cli(); __cli();
if (!current->need_resched) { if (!current->need_resched) {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -231,10 +231,11 @@ oak_halt(void) ...@@ -231,10 +231,11 @@ oak_halt(void)
/* /*
* Document me. * Document me.
*/ */
void __init long __init
oak_time_init(void) oak_time_init(void)
{ {
/* XXX - Implement me */ /* XXX - Implement me */
return 0;
} }
/* /*
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -204,17 +204,12 @@ pmac_get_irq(struct pt_regs *regs) ...@@ -204,17 +204,12 @@ pmac_get_irq(struct pt_regs *regs)
unsigned long bits = 0; unsigned long bits = 0;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
void pmac_smp_message_recv(void); void pmac_smp_message_recv(struct pt_regs *);
/* IPI's are a hack on the powersurge -- Cort */ /* IPI's are a hack on the powersurge -- Cort */
if ( smp_processor_id() != 0 ) if ( smp_processor_id() != 0 )
{ {
#ifdef CONFIG_XMON pmac_smp_message_recv(regs);
static int xmon_2nd;
if (xmon_2nd)
xmon(regs);
#endif
pmac_smp_message_recv();
return -2; /* ignore, already handled */ return -2; /* ignore, already handled */
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment