Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] integrator: fix build warnings and errors [ARM] fix OMAP include loops Revert "[ARM] pxa: spitz wants PXA27x UDC definitions" [ARM] 5053/1: define before use of processor_id [ARM] 5052/1: export clock functions for the at91x40 [ARM] 5051/1: define pgtable_t for the !CONFIG_MMU case too [ARM] omap: fix omap clk support build errors [ARM] 5039/1: S3C244X: Rename SDI device if running on S3C244X. [ARM] 5043/1: pxafb: remove unused mode variable in pxafb_init_fbinfo [ARM] 5041/1: VR1000: Fix DM9000 IRQ flags initialisation [ARM] 5040/1: BAST: Fix DM9000 IRQ flags initialisation [ARM] 5038/1: ARM: OMAP: Remove tsc2102 references from board-palmte.c [ARM] 5025/2: fix collie cpu initialisation
This commit is contained in:
commit
d3c5f8b93f
|
@ -16,16 +16,32 @@
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/arch/at91x40.h>
|
#include <asm/arch/at91x40.h>
|
||||||
#include <asm/arch/at91_st.h>
|
#include <asm/arch/at91_st.h>
|
||||||
|
#include <asm/arch/timex.h>
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is used in the gpio code, stub locally.
|
* Export the clock functions for the AT91X40. Some external code common
|
||||||
|
* to all AT91 family parts relys on this, like the gpio and serial support.
|
||||||
*/
|
*/
|
||||||
int clk_enable(struct clk *clk)
|
int clk_enable(struct clk *clk)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clk_disable(struct clk *clk)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long clk_get_rate(struct clk *clk)
|
||||||
|
{
|
||||||
|
return AT91X40_MASTER_CLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct clk *clk_get(struct device *dev, const char *id)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void __init at91x40_initialize(unsigned long main_clock)
|
void __init at91x40_initialize(unsigned long main_clock)
|
||||||
{
|
{
|
||||||
at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1)
|
at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1)
|
||||||
|
|
|
@ -369,7 +369,8 @@ static int impd1_probe(struct lm_device *dev)
|
||||||
|
|
||||||
lm_set_drvdata(dev, impd1);
|
lm_set_drvdata(dev, impd1);
|
||||||
|
|
||||||
printk("IM-PD1 found at 0x%08lx\n", dev->resource.start);
|
printk("IM-PD1 found at 0x%08lx\n",
|
||||||
|
(unsigned long)dev->resource.start);
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) {
|
for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) {
|
||||||
impd1->vcos[i].owner = THIS_MODULE,
|
impd1->vcos[i].owner = THIS_MODULE,
|
||||||
|
|
|
@ -405,7 +405,6 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||||
addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255,
|
addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255,
|
||||||
v3_readb(V3_LB_ISTAT));
|
v3_readb(V3_LB_ISTAT));
|
||||||
printk(KERN_DEBUG "%s", buf);
|
printk(KERN_DEBUG "%s", buf);
|
||||||
printascii(buf);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
v3_writeb(V3_LB_ISTAT, 0);
|
v3_writeb(V3_LB_ISTAT, 0);
|
||||||
|
@ -447,6 +446,7 @@ static irqreturn_t v3_irq(int dummy, void *devid)
|
||||||
unsigned long pc = instruction_pointer(regs);
|
unsigned long pc = instruction_pointer(regs);
|
||||||
unsigned long instr = *(unsigned long *)pc;
|
unsigned long instr = *(unsigned long *)pc;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
extern void printascii(const char *);
|
||||||
|
|
||||||
sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x "
|
sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x "
|
||||||
"ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr,
|
"ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr,
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
#include <linux/spi/spi.h>
|
#include <linux/spi/spi.h>
|
||||||
#include <linux/spi/tsc2102.h>
|
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/apm-emulation.h>
|
#include <linux/apm-emulation.h>
|
||||||
|
|
||||||
|
@ -315,14 +314,6 @@ static void palmte_get_power_status(struct apm_power_info *info, int *battery)
|
||||||
#define palmte_get_power_status NULL
|
#define palmte_get_power_status NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct tsc2102_config palmte_tsc2102_config = {
|
|
||||||
.use_internal = 0,
|
|
||||||
.monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP,
|
|
||||||
.temp_at25c = { 2200, 2615 },
|
|
||||||
.apm_report = palmte_get_power_status,
|
|
||||||
.alsa_config = &palmte_alsa_config,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct omap_board_config_kernel palmte_config[] __initdata = {
|
static struct omap_board_config_kernel palmte_config[] __initdata = {
|
||||||
{ OMAP_TAG_USB, &palmte_usb_config },
|
{ OMAP_TAG_USB, &palmte_usb_config },
|
||||||
{ OMAP_TAG_MMC, &palmte_mmc_config },
|
{ OMAP_TAG_MMC, &palmte_mmc_config },
|
||||||
|
@ -336,7 +327,6 @@ static struct spi_board_info palmte_spi_info[] __initdata = {
|
||||||
.bus_num = 2, /* uWire (officially) */
|
.bus_num = 2, /* uWire (officially) */
|
||||||
.chip_select = 0, /* As opposed to 3 */
|
.chip_select = 0, /* As opposed to 3 */
|
||||||
.irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO),
|
.irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO),
|
||||||
.platform_data = &palmte_tsc2102_config,
|
|
||||||
.max_speed_hz = 8000000,
|
.max_speed_hz = 8000000,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
#include <asm/arch/pxa-regs.h>
|
#include <asm/arch/pxa-regs.h>
|
||||||
#include <asm/arch/pxa2xx-regs.h>
|
#include <asm/arch/pxa2xx-regs.h>
|
||||||
#include <asm/arch/pxa2xx-gpio.h>
|
#include <asm/arch/pxa2xx-gpio.h>
|
||||||
#include <asm/arch/pxa27x-udc.h>
|
|
||||||
#include <asm/arch/irda.h>
|
#include <asm/arch/irda.h>
|
||||||
#include <asm/arch/mmc.h>
|
#include <asm/arch/mmc.h>
|
||||||
#include <asm/arch/ohci.h>
|
#include <asm/arch/ohci.h>
|
||||||
|
|
|
@ -374,7 +374,7 @@ static struct resource bast_dm9k_resource[] = {
|
||||||
[2] = {
|
[2] = {
|
||||||
.start = IRQ_DM9000,
|
.start = IRQ_DM9000,
|
||||||
.end = IRQ_DM9000,
|
.end = IRQ_DM9000,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -263,7 +263,7 @@ static struct resource vr1000_dm9k0_resource[] = {
|
||||||
[2] = {
|
[2] = {
|
||||||
.start = IRQ_VR1000_DM9000A,
|
.start = IRQ_VR1000_DM9000A,
|
||||||
.end = IRQ_VR1000_DM9000A,
|
.end = IRQ_VR1000_DM9000A,
|
||||||
.flags = IORESOURCE_IRQ
|
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -282,7 +282,7 @@ static struct resource vr1000_dm9k1_resource[] = {
|
||||||
[2] = {
|
[2] = {
|
||||||
.start = IRQ_VR1000_DM9000N,
|
.start = IRQ_VR1000_DM9000N,
|
||||||
.end = IRQ_VR1000_DM9000N,
|
.end = IRQ_VR1000_DM9000N,
|
||||||
.flags = IORESOURCE_IRQ
|
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -225,26 +225,28 @@ static void __init collie_init(void)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/* cpu initialize */
|
/* cpu initialize */
|
||||||
GAFR = ( GPIO_SSP_TXD | \
|
GAFR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK |
|
||||||
GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK | GPIO_TIC_ACK | \
|
GPIO_MCP_CLK | GPIO_32_768kHz;
|
||||||
GPIO_32_768kHz );
|
|
||||||
|
|
||||||
GPDR = ( GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 | \
|
GPDR = GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 |
|
||||||
GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD | \
|
GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD |
|
||||||
GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK | \
|
GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK |
|
||||||
GPIO_SDLC_AAF | GPIO_UART_SCLK1 | GPIO_32_768kHz );
|
COLLIE_GPIO_UCB1x00_RESET | COLLIE_GPIO_nMIC_ON |
|
||||||
GPLR = GPIO_GPIO18;
|
COLLIE_GPIO_nREMOCON_ON | GPIO_32_768kHz;
|
||||||
|
|
||||||
// PPC pin setting
|
PPDR = PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 |
|
||||||
PPDR = ( PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 | \
|
PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS |
|
||||||
PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS | \
|
PPC_TXD1 | PPC_TXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM;
|
||||||
PPC_TXD1 | PPC_TXD2 | PPC_RXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM );
|
|
||||||
|
|
||||||
PSDR = ( PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4 );
|
PWER = COLLIE_GPIO_AC_IN | COLLIE_GPIO_CO | COLLIE_GPIO_ON_KEY |
|
||||||
|
COLLIE_GPIO_WAKEUP | COLLIE_GPIO_nREMOCON_INT | PWER_RTC;
|
||||||
|
|
||||||
|
PGSR = COLLIE_GPIO_nREMOCON_ON;
|
||||||
|
|
||||||
|
PSDR = PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4;
|
||||||
|
|
||||||
|
PCFR = PCFR_OPDE;
|
||||||
|
|
||||||
GAFR |= GPIO_32_768kHz;
|
|
||||||
GPDR |= GPIO_32_768kHz;
|
|
||||||
TUCR = TUCR_32_768kHz;
|
|
||||||
|
|
||||||
platform_scoop_config = &collie_pcmcia_config;
|
platform_scoop_config = &collie_pcmcia_config;
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/cpufreq.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ void __init s3c244x_map_io(struct map_desc *mach_desc, int size)
|
||||||
|
|
||||||
/* rename any peripherals used differing from the s3c2410 */
|
/* rename any peripherals used differing from the s3c2410 */
|
||||||
|
|
||||||
|
s3c_device_sdi.name = "s3c2440-sdi";
|
||||||
s3c_device_i2c.name = "s3c2440-i2c";
|
s3c_device_i2c.name = "s3c2440-i2c";
|
||||||
s3c_device_nand.name = "s3c2440-nand";
|
s3c_device_nand.name = "s3c2440-nand";
|
||||||
s3c_device_usbgadget.name = "s3c2440-usbgadget";
|
s3c_device_usbgadget.name = "s3c2440-usbgadget";
|
||||||
|
|
|
@ -1351,7 +1351,6 @@ static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev)
|
||||||
struct pxafb_info *fbi;
|
struct pxafb_info *fbi;
|
||||||
void *addr;
|
void *addr;
|
||||||
struct pxafb_mach_info *inf = dev->platform_data;
|
struct pxafb_mach_info *inf = dev->platform_data;
|
||||||
struct pxafb_mode_info *mode = inf->modes;
|
|
||||||
|
|
||||||
/* Alloc the pxafb_info and pseudo_palette in one step */
|
/* Alloc the pxafb_info and pseudo_palette in one step */
|
||||||
fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL);
|
fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL);
|
||||||
|
|
|
@ -14,8 +14,6 @@
|
||||||
#ifndef __OMAP_BOARD_PALMTE_H
|
#ifndef __OMAP_BOARD_PALMTE_H
|
||||||
#define __OMAP_BOARD_PALMTE_H
|
#define __OMAP_BOARD_PALMTE_H
|
||||||
|
|
||||||
#include <asm/arch/gpio.h>
|
|
||||||
|
|
||||||
#define PALMTE_USBDETECT_GPIO 0
|
#define PALMTE_USBDETECT_GPIO 0
|
||||||
#define PALMTE_USB_OR_DC_GPIO 1
|
#define PALMTE_USB_OR_DC_GPIO 1
|
||||||
#define PALMTE_TSC_GPIO 4
|
#define PALMTE_TSC_GPIO 4
|
||||||
|
|
|
@ -73,6 +73,8 @@ struct clk {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct cpufreq_frequency_table;
|
||||||
|
|
||||||
struct clk_functions {
|
struct clk_functions {
|
||||||
int (*clk_enable)(struct clk *clk);
|
int (*clk_enable)(struct clk *clk);
|
||||||
void (*clk_disable)(struct clk *clk);
|
void (*clk_disable)(struct clk *clk);
|
||||||
|
@ -83,6 +85,9 @@ struct clk_functions {
|
||||||
void (*clk_allow_idle)(struct clk *clk);
|
void (*clk_allow_idle)(struct clk *clk);
|
||||||
void (*clk_deny_idle)(struct clk *clk);
|
void (*clk_deny_idle)(struct clk *clk);
|
||||||
void (*clk_disable_unused)(struct clk *clk);
|
void (*clk_disable_unused)(struct clk *clk);
|
||||||
|
#ifdef CONFIG_CPU_FREQ
|
||||||
|
void (*clk_init_cpufreq_table)(struct cpufreq_frequency_table **);
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
extern unsigned int mpurate;
|
extern unsigned int mpurate;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
* warranty of any kind, whether express or implied.
|
* warranty of any kind, whether express or implied.
|
||||||
*/
|
*/
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
|
#include <asm/arch/io.h>
|
||||||
#include <asm/arch/irqs.h>
|
#include <asm/arch/irqs.h>
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP1)
|
#if defined(CONFIG_ARCH_OMAP1)
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#ifndef __ASM_ARCH_OMAP_GPIO_H
|
#ifndef __ASM_ARCH_OMAP_GPIO_H
|
||||||
#define __ASM_ARCH_OMAP_GPIO_H
|
#define __ASM_ARCH_OMAP_GPIO_H
|
||||||
|
|
||||||
#include <asm/hardware.h>
|
|
||||||
#include <asm/arch/irqs.h>
|
#include <asm/arch/irqs.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
#include <asm/types.h>
|
#include <asm/types.h>
|
||||||
#include <asm/arch/cpu.h>
|
#include <asm/arch/cpu.h>
|
||||||
#endif
|
#endif
|
||||||
#include <asm/arch/io.h>
|
|
||||||
#include <asm/arch/serial.h>
|
#include <asm/arch/serial.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -34,9 +34,12 @@
|
||||||
|
|
||||||
#define COLLIE_GPIO_ON_KEY GPIO_GPIO (0)
|
#define COLLIE_GPIO_ON_KEY GPIO_GPIO (0)
|
||||||
#define COLLIE_GPIO_AC_IN GPIO_GPIO (1)
|
#define COLLIE_GPIO_AC_IN GPIO_GPIO (1)
|
||||||
|
#define COLLIE_GPIO_SDIO_INT GPIO_GPIO (11)
|
||||||
#define COLLIE_GPIO_CF_IRQ GPIO_GPIO (14)
|
#define COLLIE_GPIO_CF_IRQ GPIO_GPIO (14)
|
||||||
#define COLLIE_GPIO_nREMOCON_INT GPIO_GPIO (15)
|
#define COLLIE_GPIO_nREMOCON_INT GPIO_GPIO (15)
|
||||||
#define COLLIE_GPIO_UCB1x00_RESET GPIO_GPIO (16)
|
#define COLLIE_GPIO_UCB1x00_RESET GPIO_GPIO (16)
|
||||||
|
#define COLLIE_GPIO_nMIC_ON GPIO_GPIO (17)
|
||||||
|
#define COLLIE_GPIO_nREMOCON_ON GPIO_GPIO (18)
|
||||||
#define COLLIE_GPIO_CO GPIO_GPIO (20)
|
#define COLLIE_GPIO_CO GPIO_GPIO (20)
|
||||||
#define COLLIE_GPIO_MCP_CLK GPIO_GPIO (21)
|
#define COLLIE_GPIO_MCP_CLK GPIO_GPIO (21)
|
||||||
#define COLLIE_GPIO_CF_CD GPIO_GPIO (22)
|
#define COLLIE_GPIO_CF_CD GPIO_GPIO (22)
|
||||||
|
@ -49,6 +52,7 @@
|
||||||
|
|
||||||
#define COLLIE_IRQ_GPIO_ON_KEY IRQ_GPIO0
|
#define COLLIE_IRQ_GPIO_ON_KEY IRQ_GPIO0
|
||||||
#define COLLIE_IRQ_GPIO_AC_IN IRQ_GPIO1
|
#define COLLIE_IRQ_GPIO_AC_IN IRQ_GPIO1
|
||||||
|
#define COLLIE_IRQ_GPIO_SDIO_IRQ IRQ_GPIO11
|
||||||
#define COLLIE_IRQ_GPIO_CF_IRQ IRQ_GPIO14
|
#define COLLIE_IRQ_GPIO_CF_IRQ IRQ_GPIO14
|
||||||
#define COLLIE_IRQ_GPIO_nREMOCON_INT IRQ_GPIO15
|
#define COLLIE_IRQ_GPIO_nREMOCON_INT IRQ_GPIO15
|
||||||
#define COLLIE_IRQ_GPIO_CO IRQ_GPIO20
|
#define COLLIE_IRQ_GPIO_CO IRQ_GPIO20
|
||||||
|
|
|
@ -179,10 +179,10 @@ typedef unsigned long pgprot_t;
|
||||||
|
|
||||||
#endif /* STRICT_MM_TYPECHECKS */
|
#endif /* STRICT_MM_TYPECHECKS */
|
||||||
|
|
||||||
typedef struct page *pgtable_t;
|
|
||||||
|
|
||||||
#endif /* CONFIG_MMU */
|
#endif /* CONFIG_MMU */
|
||||||
|
|
||||||
|
typedef struct page *pgtable_t;
|
||||||
|
|
||||||
#include <asm/memory.h>
|
#include <asm/memory.h>
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
|
|
|
@ -48,20 +48,6 @@
|
||||||
#define CPUID_TCM 2
|
#define CPUID_TCM 2
|
||||||
#define CPUID_TLBTYPE 3
|
#define CPUID_TLBTYPE 3
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_CP15
|
|
||||||
#define read_cpuid(reg) \
|
|
||||||
({ \
|
|
||||||
unsigned int __val; \
|
|
||||||
asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \
|
|
||||||
: "=r" (__val) \
|
|
||||||
: \
|
|
||||||
: "cc"); \
|
|
||||||
__val; \
|
|
||||||
})
|
|
||||||
#else
|
|
||||||
#define read_cpuid(reg) (processor_id)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is used to ensure the compiler did actually allocate the register we
|
* This is used to ensure the compiler did actually allocate the register we
|
||||||
* asked it for some inline assembly sequences. Apparently we can't trust
|
* asked it for some inline assembly sequences. Apparently we can't trust
|
||||||
|
@ -78,6 +64,21 @@
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
#include <linux/irqflags.h>
|
#include <linux/irqflags.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_CP15
|
||||||
|
#define read_cpuid(reg) \
|
||||||
|
({ \
|
||||||
|
unsigned int __val; \
|
||||||
|
asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \
|
||||||
|
: "=r" (__val) \
|
||||||
|
: \
|
||||||
|
: "cc"); \
|
||||||
|
__val; \
|
||||||
|
})
|
||||||
|
#else
|
||||||
|
extern unsigned int processor_id;
|
||||||
|
#define read_cpuid(reg) (processor_id)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The CPU ID never changes at run time, so we might as well tell the
|
* The CPU ID never changes at run time, so we might as well tell the
|
||||||
* compiler that it's constant. Use this function to read the CPU ID
|
* compiler that it's constant. Use this function to read the CPU ID
|
||||||
|
|
Reference in New Issue