Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 112585
b: refs/heads/master
c: 6e03f99
h: refs/heads/master
i:
  112583: db78650
v: v3
  • Loading branch information
Ingo Molnar committed Sep 14, 2008
1 parent 26fd620 commit f52082a
Show file tree
Hide file tree
Showing 93 changed files with 1,213 additions and 785 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 982162602b31041b426edec6480d327743abcbcc
refs/heads/master: 6e03f99803195e5aaf7f247db31b0d11857ccc35
26 changes: 26 additions & 0 deletions trunk/Documentation/ABI/testing/sysfs-gpio
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
What: /sys/class/gpio/
Date: July 2008
KernelVersion: 2.6.27
Contact: David Brownell <dbrownell@users.sourceforge.net>
Description:

As a Kconfig option, individual GPIO signals may be accessed from
userspace. GPIOs are only made available to userspace by an explicit
"export" operation. If a given GPIO is not claimed for use by
kernel code, it may be exported by userspace (and unexported later).
Kernel code may export it for complete or partial access.

GPIOs are identified as they are inside the kernel, using integers in
the range 0..INT_MAX. See Documentation/gpio.txt for more information.

/sys/class/gpio
/export ... asks the kernel to export a GPIO to userspace
/unexport ... to return a GPIO to the kernel
/gpioN ... for each exported GPIO #N
/value ... always readable, writes fail for input GPIOs
/direction ... r/w as: in, out (default low); write: high, low
/gpiochipN ... for each gpiochip; #N is its first GPIO
/base ... (r/o) same as N
/label ... (r/o) descriptive, not necessarily unique
/ngpio ... (r/o) number of GPIOs; numbered N to N + (ngpio - 1)

18 changes: 10 additions & 8 deletions trunk/Documentation/cpusets.txt
Original file line number Diff line number Diff line change
Expand Up @@ -635,14 +635,16 @@ prior 'mems' setting, will not be moved.

There is an exception to the above. If hotplug functionality is used
to remove all the CPUs that are currently assigned to a cpuset,
then the kernel will automatically update the cpus_allowed of all
tasks attached to CPUs in that cpuset to allow all CPUs. When memory
hotplug functionality for removing Memory Nodes is available, a
similar exception is expected to apply there as well. In general,
the kernel prefers to violate cpuset placement, over starving a task
that has had all its allowed CPUs or Memory Nodes taken offline. User
code should reconfigure cpusets to only refer to online CPUs and Memory
Nodes when using hotplug to add or remove such resources.
then all the tasks in that cpuset will be moved to the nearest ancestor
with non-empty cpus. But the moving of some (or all) tasks might fail if
cpuset is bound with another cgroup subsystem which has some restrictions
on task attaching. In this failing case, those tasks will stay
in the original cpuset, and the kernel will automatically update
their cpus_allowed to allow all online CPUs. When memory hotplug
functionality for removing Memory Nodes is available, a similar exception
is expected to apply there as well. In general, the kernel prefers to
violate cpuset placement, over starving a task that has had all
its allowed CPUs or Memory Nodes taken offline.

There is a second exception to the above. GFP_ATOMIC requests are
kernel internal allocations that must be satisfied, immediately.
Expand Down
8 changes: 8 additions & 0 deletions trunk/Documentation/feature-removal-schedule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -322,3 +322,11 @@ Why: Accounting can now be enabled/disabled without kernel recompilation.
controlled by a kernel/module/sysfs/sysctl parameter.
Who: Krzysztof Piotr Oledzki <ole@ans.pl>

---------------------------

What: ide-scsi (BLK_DEV_IDESCSI)
When: 2.6.29
Why: The 2.6 kernel supports direct writing to ide CD drives, which
eliminates the need for ide-scsi. The new method is more
efficient in every way.
Who: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2 changes: 2 additions & 0 deletions trunk/Documentation/filesystems/proc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2413,6 +2413,8 @@ The following 4 memory types are supported:
- (bit 1) anonymous shared memory
- (bit 2) file-backed private memory
- (bit 3) file-backed shared memory
- (bit 4) ELF header pages in file-backed private memory areas (it is
effective only if the bit 2 is cleared)

Note that MMIO pages such as frame buffer are never dumped and vDSO pages
are always dumped regardless of the bitmask status.
Expand Down
2 changes: 1 addition & 1 deletion trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -4365,7 +4365,7 @@ S: Maintained
USB VIDEO CLASS
P: Laurent Pinchart
M: laurent.pinchart@skynet.be
L: linx-uvc-devel@berlios.de
L: linux-uvc-devel@lists.berlios.de
L: video4linux-list@redhat.com
W: http://linux-uvc.berlios.de
S: Maintained
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/arm/include/asm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ static inline void pcibios_penalize_isa_irq(int irq, int active)
* The networking and block device layers use this boolean for bounce
* buffer decisions.
*/
#define PCI_DMA_BUS_IS_PHYS (0)
#define PCI_DMA_BUS_IS_PHYS (1)

/*
* Whether pci_unmap_{single,page} is a nop depends upon the
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/arm/mach-mx3/pcm037.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ static struct platform_device pcm037_flash = {
};

static struct imxuart_platform_data uart_pdata = {
.flags = 0,
.flags = IMXUART_HAVE_RTSCTS,
};

static struct platform_device *devices[] __initdata = {
Expand Down
11 changes: 11 additions & 0 deletions trunk/arch/arm/mach-pxa/tosa.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
#include <asm/mach/sharpsl_param.h>

#include "generic.h"
#include "clock.h"
#include "devices.h"

static unsigned long tosa_pin_config[] = {
Expand Down Expand Up @@ -521,6 +522,14 @@ static struct gpio_keys_button tosa_gpio_keys[] = {
.wakeup = 1,
.active_low = 1,
},
{
.type = EV_SW,
.code = SW_HEADPHONE_INSERT,
.gpio = TOSA_GPIO_EAR_IN,
.desc = "HeadPhone insert",
.active_low = 1,
.debounce_interval = 300,
},
};

static struct gpio_keys_platform_data tosa_gpio_keys_platform_data = {
Expand Down Expand Up @@ -792,6 +801,8 @@ static void __init tosa_init(void)
pxa_set_i2c_info(NULL);
platform_scoop_config = &tosa_pcmcia_config;

clk_add_alias("CLK_CK3P6MI", &tc6393xb_device.dev, "GPIO11_CLK", NULL);

platform_add_devices(devices, ARRAY_SIZE(devices));
}

Expand Down
123 changes: 91 additions & 32 deletions trunk/arch/arm/plat-omap/devices.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

#include <mach/tc.h>
#include <mach/board.h>
#include <mach/mmc.h>
#include <mach/mux.h>
#include <mach/gpio.h>
#include <mach/menelaus.h>
Expand Down Expand Up @@ -194,25 +195,38 @@ void omap_mcbsp_register_board_cfg(struct omap_mcbsp_platform_data *config,

/*-------------------------------------------------------------------------*/

#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)

#ifdef CONFIG_ARCH_OMAP24XX
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
#define OMAP_MMC1_BASE 0x4809c000
#define OMAP_MMC1_INT INT_24XX_MMC_IRQ
#define OMAP_MMC1_END (OMAP_MMC1_BASE + 0x1fc)
#define OMAP_MMC1_INT INT_24XX_MMC_IRQ

#define OMAP_MMC2_BASE 0x480b4000
#define OMAP_MMC2_END (OMAP_MMC2_BASE + 0x1fc)
#define OMAP_MMC2_INT INT_24XX_MMC2_IRQ

#else

#define OMAP_MMC1_BASE 0xfffb7800
#define OMAP_MMC1_END (OMAP_MMC1_BASE + 0x7f)
#define OMAP_MMC1_INT INT_MMC
#endif

#define OMAP_MMC2_BASE 0xfffb7c00 /* omap16xx only */
#define OMAP_MMC2_END (OMAP_MMC2_BASE + 0x7f)
#define OMAP_MMC2_INT INT_1610_MMC2

static struct omap_mmc_conf mmc1_conf;
#endif

static struct omap_mmc_platform_data mmc1_data;

static u64 mmc1_dmamask = 0xffffffff;

static struct resource mmc1_resources[] = {
{
.start = OMAP_MMC1_BASE,
.end = OMAP_MMC1_BASE + 0x7f,
.end = OMAP_MMC1_END,
.flags = IORESOURCE_MEM,
},
{
Expand All @@ -226,26 +240,27 @@ static struct platform_device mmc_omap_device1 = {
.id = 1,
.dev = {
.dma_mask = &mmc1_dmamask,
.platform_data = &mmc1_conf,
.platform_data = &mmc1_data,
},
.num_resources = ARRAY_SIZE(mmc1_resources),
.resource = mmc1_resources,
};

#ifdef CONFIG_ARCH_OMAP16XX
#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2430) || \
defined(CONFIG_ARCH_OMAP34XX)

static struct omap_mmc_conf mmc2_conf;
static struct omap_mmc_platform_data mmc2_data;

static u64 mmc2_dmamask = 0xffffffff;

static struct resource mmc2_resources[] = {
{
.start = OMAP_MMC2_BASE,
.end = OMAP_MMC2_BASE + 0x7f,
.end = OMAP_MMC2_END,
.flags = IORESOURCE_MEM,
},
{
.start = INT_1610_MMC2,
.start = OMAP_MMC2_INT,
.flags = IORESOURCE_IRQ,
},
};
Expand All @@ -255,26 +270,19 @@ static struct platform_device mmc_omap_device2 = {
.id = 2,
.dev = {
.dma_mask = &mmc2_dmamask,
.platform_data = &mmc2_conf,
.platform_data = &mmc2_data,
},
.num_resources = ARRAY_SIZE(mmc2_resources),
.resource = mmc2_resources,
};
#endif

static void __init omap_init_mmc(void)
static inline void omap_init_mmc_conf(const struct omap_mmc_config *mmc_conf)
{
const struct omap_mmc_config *mmc_conf;
const struct omap_mmc_conf *mmc;

/* NOTE: assumes MMC was never (wrongly) enabled */
mmc_conf = omap_get_config(OMAP_TAG_MMC, struct omap_mmc_config);
if (!mmc_conf)
if (cpu_is_omap2430() || cpu_is_omap34xx())
return;

/* block 1 is always available and has just one pinout option */
mmc = &mmc_conf->mmc[0];
if (mmc->enabled) {
if (mmc_conf->mmc[0].enabled) {
if (cpu_is_omap24xx()) {
omap_cfg_reg(H18_24XX_MMC_CMD);
omap_cfg_reg(H15_24XX_MMC_CLKI);
Expand All @@ -292,7 +300,7 @@ static void __init omap_init_mmc(void)
omap_cfg_reg(P20_1710_MMC_DATDIR0);
}
}
if (mmc->wire4) {
if (mmc_conf->mmc[0].wire4) {
if (cpu_is_omap24xx()) {
omap_cfg_reg(H14_24XX_MMC_DAT1);
omap_cfg_reg(E19_24XX_MMC_DAT2);
Expand All @@ -303,25 +311,35 @@ static void __init omap_init_mmc(void)
} else {
omap_cfg_reg(MMC_DAT1);
/* NOTE: DAT2 can be on W10 (here) or M15 */
if (!mmc->nomux)
if (!mmc_conf->mmc[0].nomux)
omap_cfg_reg(MMC_DAT2);
omap_cfg_reg(MMC_DAT3);
}
}
mmc1_conf = *mmc;
(void) platform_device_register(&mmc_omap_device1);
#if defined(CONFIG_ARCH_OMAP2420)
if (mmc_conf->mmc[0].internal_clock) {
/*
* Use internal loop-back in MMC/SDIO
* Module Input Clock selection
*/
if (cpu_is_omap24xx()) {
u32 v = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
v |= (1 << 24); /* not used in 243x */
omap_ctrl_writel(v, OMAP2_CONTROL_DEVCONF0);
}
}
#endif
}

#ifdef CONFIG_ARCH_OMAP16XX
/* block 2 is on newer chips, and has many pinout options */
mmc = &mmc_conf->mmc[1];
if (mmc->enabled) {
if (!mmc->nomux) {
if (mmc_conf->mmc[1].enabled) {
if (!mmc_conf->mmc[1].nomux) {
omap_cfg_reg(Y8_1610_MMC2_CMD);
omap_cfg_reg(Y10_1610_MMC2_CLK);
omap_cfg_reg(R18_1610_MMC2_CLKIN);
omap_cfg_reg(W8_1610_MMC2_DAT0);
if (mmc->wire4) {
if (mmc_conf->mmc[1].wire4) {
omap_cfg_reg(V8_1610_MMC2_DAT1);
omap_cfg_reg(W15_1610_MMC2_DAT2);
omap_cfg_reg(R10_1610_MMC2_DAT3);
Expand All @@ -337,14 +355,55 @@ static void __init omap_init_mmc(void)
if (cpu_is_omap1710())
omap_writel(omap_readl(MOD_CONF_CTRL_1) | (1 << 24),
MOD_CONF_CTRL_1);
mmc2_conf = *mmc;
}
#endif
}

static void __init omap_init_mmc(void)
{
const struct omap_mmc_config *mmc_conf;

/* NOTE: assumes MMC was never (wrongly) enabled */
mmc_conf = omap_get_config(OMAP_TAG_MMC, struct omap_mmc_config);
if (!mmc_conf)
return;

omap_init_mmc_conf(mmc_conf);

if (mmc_conf->mmc[0].enabled) {
mmc1_data.conf = mmc_conf->mmc[0];
(void) platform_device_register(&mmc_omap_device1);
}

#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2430) || \
defined(CONFIG_ARCH_OMAP34XX)
if (mmc_conf->mmc[1].enabled) {
mmc2_data.conf = mmc_conf->mmc[1];
(void) platform_device_register(&mmc_omap_device2);
}
#endif
return;
}

void omap_set_mmc_info(int host, const struct omap_mmc_platform_data *info)
{
switch (host) {
case 1:
mmc1_data = *info;
break;
#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP2430) || \
defined(CONFIG_ARCH_OMAP34XX)
case 2:
mmc2_data = *info;
break;
#endif
default:
BUG();
}
}

#else
static inline void omap_init_mmc(void) {}
void omap_set_mmc_info(int host, const struct omap_mmc_platform_data *info) {}
#endif

/*-------------------------------------------------------------------------*/
Expand Down
15 changes: 15 additions & 0 deletions trunk/arch/ia64/include/asm/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -266,4 +266,19 @@ do { \
} \
} while (0)

/*
* format for entries in the Global Offset Table
*/
struct got_entry {
uint64_t val;
};

/*
* Layout of the Function Descriptor
*/
struct fdesc {
uint64_t ip;
uint64_t gp;
};

#endif /* _ASM_IA64_ELF_H */
Loading

0 comments on commit f52082a

Please sign in to comment.