You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
[ARM] Merge most of the PXA work for initial merge
This includes PXA work up to the SPI changes for the initial merge,
since e172274ccc depends on the SPI
tree being merged.
Conflicts:
arch/arm/configs/em_x270_defconfig
arch/arm/configs/xm_x270_defconfig
This commit is contained in:
@@ -22,6 +22,9 @@ config ARM
|
||||
Europe. There is an ARM Linux project with a web page at
|
||||
<http://www.arm.linux.org.uk/>.
|
||||
|
||||
config HAVE_PWM
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_APM_EMULATION
|
||||
bool
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <asm/irq.h>
|
||||
#include <asm/arch/pm.h>
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-regs.h>
|
||||
#include <asm/arch/sharpsl.h>
|
||||
#include <asm/hardware/sharpsl_pm.h>
|
||||
|
||||
@@ -157,6 +158,7 @@ static void sharpsl_battery_thread(struct work_struct *private_)
|
||||
dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %ld\n", voltage,
|
||||
sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies);
|
||||
|
||||
#ifdef CONFIG_BACKLIGHT_CORGI
|
||||
/* If battery is low. limit backlight intensity to save power. */
|
||||
if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE)
|
||||
&& ((sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_LOW) ||
|
||||
@@ -169,6 +171,7 @@ static void sharpsl_battery_thread(struct work_struct *private_)
|
||||
sharpsl_pm.machinfo->backlight_limit(0);
|
||||
sharpsl_pm.flags &= ~SHARPSL_BL_LIMIT;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Suspend if critical battery level */
|
||||
if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -326,11 +326,11 @@ static struct resource ixp4xx_udc_resources[] = {
|
||||
};
|
||||
|
||||
/*
|
||||
* USB device controller. The IXP4xx uses the same controller as PXA2XX,
|
||||
* USB device controller. The IXP4xx uses the same controller as PXA25X,
|
||||
* so we just use the same device.
|
||||
*/
|
||||
static struct platform_device ixp4xx_udc_device = {
|
||||
.name = "pxa2xx-udc",
|
||||
.name = "pxa25x-udc",
|
||||
.id = -1,
|
||||
.num_resources = 2,
|
||||
.resource = ixp4xx_udc_resources,
|
||||
|
||||
@@ -20,8 +20,7 @@ endmenu
|
||||
|
||||
endif
|
||||
|
||||
choice
|
||||
prompt "Select target board"
|
||||
menu "Select target boards"
|
||||
|
||||
config ARCH_GUMSTIX
|
||||
bool "Gumstix XScale boards"
|
||||
@@ -37,10 +36,12 @@ config ARCH_LUBBOCK
|
||||
config MACH_LOGICPD_PXA270
|
||||
bool "LogicPD PXA270 Card Engine Development Platform"
|
||||
select PXA27x
|
||||
select HAVE_PWM
|
||||
|
||||
config MACH_MAINSTONE
|
||||
bool "Intel HCDDBBVA0 Development Platform"
|
||||
select PXA27x
|
||||
select HAVE_PWM
|
||||
|
||||
config ARCH_PXA_IDP
|
||||
bool "Accelent Xscale IDP"
|
||||
@@ -116,6 +117,7 @@ config MACH_COLIBRI
|
||||
config MACH_ZYLONITE
|
||||
bool "PXA3xx Development Platform"
|
||||
select PXA3xx
|
||||
select HAVE_PWM
|
||||
|
||||
config MACH_LITTLETON
|
||||
bool "PXA3xx Form Factor Platform (aka Littleton)"
|
||||
@@ -138,7 +140,7 @@ config MACH_PCM027
|
||||
select PXA27x
|
||||
select IWMMXT
|
||||
|
||||
endchoice
|
||||
endmenu
|
||||
|
||||
choice
|
||||
prompt "Used baseboard"
|
||||
@@ -146,26 +148,25 @@ choice
|
||||
|
||||
config MACH_PCM990_BASEBOARD
|
||||
bool "PHYTEC PCM-990 development board"
|
||||
select HAVE_PWM
|
||||
|
||||
endchoice
|
||||
|
||||
if PXA_SHARPSL
|
||||
|
||||
choice
|
||||
prompt "Select target Sharp Zaurus device range"
|
||||
prompt "display on pcm990"
|
||||
depends on MACH_PCM990_BASEBOARD
|
||||
|
||||
config PXA_SHARPSL_25x
|
||||
bool "Sharp PXA25x models (SL-5600, SL-C7xx and SL-C6000x)"
|
||||
select PXA25x
|
||||
config PCM990_DISPLAY_SHARP
|
||||
bool "sharp lq084v1dg21 stn display"
|
||||
|
||||
config PXA_SHARPSL_27x
|
||||
bool "Sharp PXA270 models (SL-Cxx00)"
|
||||
select PXA27x
|
||||
config PCM990_DISPLAY_NEC
|
||||
bool "nec nl6448bc20_18d tft display"
|
||||
|
||||
config PCM990_DISPLAY_NONE
|
||||
bool "no display"
|
||||
|
||||
endchoice
|
||||
|
||||
endif
|
||||
|
||||
if ARCH_GUMSTIX
|
||||
|
||||
choice
|
||||
@@ -199,28 +200,33 @@ endmenu
|
||||
|
||||
config MACH_POODLE
|
||||
bool "Enable Sharp SL-5600 (Poodle) Support"
|
||||
depends on PXA_SHARPSL_25x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA25x
|
||||
select SHARP_LOCOMO
|
||||
select PXA_SSP
|
||||
|
||||
config MACH_CORGI
|
||||
bool "Enable Sharp SL-C700 (Corgi) Support"
|
||||
depends on PXA_SHARPSL_25x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA25x
|
||||
select PXA_SHARP_C7xx
|
||||
|
||||
config MACH_SHEPHERD
|
||||
bool "Enable Sharp SL-C750 (Shepherd) Support"
|
||||
depends on PXA_SHARPSL_25x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA25x
|
||||
select PXA_SHARP_C7xx
|
||||
|
||||
config MACH_HUSKY
|
||||
bool "Enable Sharp SL-C760 (Husky) Support"
|
||||
depends on PXA_SHARPSL_25x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA25x
|
||||
select PXA_SHARP_C7xx
|
||||
|
||||
config MACH_AKITA
|
||||
bool "Enable Sharp SL-1000 (Akita) Support"
|
||||
depends on PXA_SHARPSL_27x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA27x
|
||||
select PXA_SHARP_Cxx00
|
||||
select MACH_SPITZ
|
||||
select I2C
|
||||
@@ -228,17 +234,20 @@ config MACH_AKITA
|
||||
|
||||
config MACH_SPITZ
|
||||
bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
|
||||
depends on PXA_SHARPSL_27x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA27x
|
||||
select PXA_SHARP_Cxx00
|
||||
|
||||
config MACH_BORZOI
|
||||
bool "Enable Sharp Zaurus SL-3100 (Borzoi) Support"
|
||||
depends on PXA_SHARPSL_27x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA27x
|
||||
select PXA_SHARP_Cxx00
|
||||
|
||||
config MACH_TOSA
|
||||
bool "Enable Sharp SL-6000x (Tosa) Support"
|
||||
depends on PXA_SHARPSL_25x
|
||||
depends on PXA_SHARPSL
|
||||
select PXA25x
|
||||
|
||||
config PXA25x
|
||||
bool
|
||||
@@ -273,4 +282,10 @@ config PXA_SSP
|
||||
tristate
|
||||
help
|
||||
Enable support for PXA2xx SSP ports
|
||||
|
||||
config PXA_PWM
|
||||
tristate
|
||||
default BACKLIGHT_PWM
|
||||
help
|
||||
Enable support for PXA2xx/PXA3xx PWM controllers
|
||||
endif
|
||||
|
||||
@@ -10,10 +10,11 @@ obj-$(CONFIG_CPU_FREQ) += cpu-pxa.o
|
||||
|
||||
# Generic drivers that other drivers may depend upon
|
||||
obj-$(CONFIG_PXA_SSP) += ssp.o
|
||||
obj-$(CONFIG_PXA_PWM) += pwm.o
|
||||
|
||||
# SoC-specific code
|
||||
obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa25x.o
|
||||
obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o pxa27x.o
|
||||
obj-$(CONFIG_PXA25x) += mfp-pxa2xx.o pxa2xx.o pxa25x.o
|
||||
obj-$(CONFIG_PXA27x) += mfp-pxa2xx.o pxa2xx.o pxa27x.o
|
||||
obj-$(CONFIG_PXA3xx) += mfp-pxa3xx.o pxa3xx.o smemc.o
|
||||
obj-$(CONFIG_CPU_PXA300) += pxa300.o
|
||||
obj-$(CONFIG_CPU_PXA320) += pxa320.o
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-regs.h>
|
||||
#include <asm/arch/pxa2xx-gpio.h>
|
||||
#include <asm/hardware.h>
|
||||
|
||||
@@ -47,6 +47,9 @@ struct clk *clk_get(struct device *dev, const char *id)
|
||||
clk = p;
|
||||
mutex_unlock(&clocks_mutex);
|
||||
|
||||
if (!IS_ERR(clk) && clk->ops == NULL)
|
||||
clk = clk->other;
|
||||
|
||||
return clk;
|
||||
}
|
||||
EXPORT_SYMBOL(clk_get);
|
||||
|
||||
@@ -15,6 +15,7 @@ struct clk {
|
||||
unsigned int cken;
|
||||
unsigned int delay;
|
||||
unsigned int enabled;
|
||||
struct clk *other;
|
||||
};
|
||||
|
||||
#define INIT_CKEN(_name, _cken, _rate, _delay, _dev) \
|
||||
@@ -35,6 +36,17 @@ struct clk {
|
||||
.cken = CKEN_##_cken, \
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a placeholder to alias one clock device+name pair
|
||||
* to another struct clk.
|
||||
*/
|
||||
#define INIT_CKOTHER(_name, _other, _dev) \
|
||||
{ \
|
||||
.name = _name, \
|
||||
.dev = _dev, \
|
||||
.other = _other, \
|
||||
}
|
||||
|
||||
extern const struct clkops clk_cken_ops;
|
||||
|
||||
void clk_cken_enable(struct clk *clk);
|
||||
|
||||
@@ -41,18 +41,20 @@ void __init cmx270_pci_adjust_zones(int node, unsigned long *zone_size,
|
||||
{
|
||||
unsigned int sz = SZ_64M >> PAGE_SHIFT;
|
||||
|
||||
pr_info("Adjusting zones for CM-x270\n");
|
||||
if (machine_is_armcore()) {
|
||||
pr_info("Adjusting zones for CM-x270\n");
|
||||
|
||||
/*
|
||||
* Only adjust if > 64M on current system
|
||||
*/
|
||||
if (node || (zone_size[0] <= sz))
|
||||
return;
|
||||
/*
|
||||
* Only adjust if > 64M on current system
|
||||
*/
|
||||
if (node || (zone_size[0] <= sz))
|
||||
return;
|
||||
|
||||
zone_size[1] = zone_size[0] - sz;
|
||||
zone_size[0] = sz;
|
||||
zhole_size[1] = zhole_size[0];
|
||||
zhole_size[0] = 0;
|
||||
zone_size[1] = zone_size[0] - sz;
|
||||
zone_size[0] = sz;
|
||||
zhole_size[1] = zhole_size[0];
|
||||
zhole_size[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void cmx270_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-regs.h>
|
||||
#include <asm/arch/pxa2xx-gpio.h>
|
||||
#include <asm/arch/audio.h>
|
||||
#include <asm/arch/pxafb.h>
|
||||
#include <asm/arch/ohci.h>
|
||||
#include <asm/arch/mmc.h>
|
||||
@@ -81,12 +82,6 @@ static struct platform_device cmx270_device_dm9k = {
|
||||
}
|
||||
};
|
||||
|
||||
/* audio device */
|
||||
static struct platform_device cmx270_audio_device = {
|
||||
.name = "pxa2xx-ac97",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
/* touchscreen controller */
|
||||
static struct platform_device cmx270_ts_device = {
|
||||
.name = "ucb1400_ts",
|
||||
@@ -219,7 +214,6 @@ static struct platform_device cmx270_ata = {
|
||||
/* platform devices */
|
||||
static struct platform_device *platform_devices[] __initdata = {
|
||||
&cmx270_device_dm9k,
|
||||
&cmx270_audio_device,
|
||||
&cmx270_rtc_device,
|
||||
&cmx270_2700G,
|
||||
&cmx270_led_device,
|
||||
@@ -594,6 +588,7 @@ static void __init cmx270_init(void)
|
||||
|
||||
/* register CM-X270 platform devices */
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
pxa_set_ac97_info(NULL);
|
||||
|
||||
/* set MCI and OHCI platform parameters */
|
||||
pxa_set_mci_info(&cmx270_mci_platform_data);
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <asm/mach/irq.h>
|
||||
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-regs.h>
|
||||
#include <asm/arch/pxa2xx-gpio.h>
|
||||
#include <asm/arch/irda.h>
|
||||
#include <asm/arch/mmc.h>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <asm/arch/sharpsl.h>
|
||||
#include <asm/arch/corgi.h>
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-regs.h>
|
||||
#include <asm/arch/pxa2xx-gpio.h>
|
||||
#include "sharpsl.h"
|
||||
|
||||
@@ -204,7 +205,9 @@ static struct sharpsl_charger_machinfo corgi_pm_machinfo = {
|
||||
.read_devdata = corgipm_read_devdata,
|
||||
.charger_wakeup = corgi_charger_wakeup,
|
||||
.should_wakeup = corgi_should_wakeup,
|
||||
#ifdef CONFIG_BACKLIGHT_CORGI
|
||||
.backlight_limit = corgibl_limit_intensity,
|
||||
#endif
|
||||
.charge_on_volt = SHARPSL_CHARGE_ON_VOLT,
|
||||
.charge_on_temp = SHARPSL_CHARGE_ON_TEMP,
|
||||
.charge_acin_high = SHARPSL_CHARGE_ON_ACIN_HIGH,
|
||||
@@ -226,6 +229,10 @@ static int __devinit corgipm_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!machine_is_corgi() && !machine_is_shepherd()
|
||||
&& !machine_is_husky())
|
||||
return -ENODEV;
|
||||
|
||||
corgipm_device = platform_device_alloc("sharpsl-pm", -1);
|
||||
if (!corgipm_device)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -10,11 +10,14 @@
|
||||
#include <asm/arch/mmc.h>
|
||||
#include <asm/arch/irda.h>
|
||||
#include <asm/arch/i2c.h>
|
||||
#include <asm/arch/mfp-pxa27x.h>
|
||||
#include <asm/arch/ohci.h>
|
||||
#include <asm/arch/pxa27x_keypad.h>
|
||||
#include <asm/arch/camera.h>
|
||||
#include <asm/arch/audio.h>
|
||||
|
||||
#include "devices.h"
|
||||
#include "generic.h"
|
||||
|
||||
void __init pxa_register_device(struct platform_device *dev, void *data)
|
||||
{
|
||||
@@ -91,8 +94,19 @@ static struct resource pxa2xx_udc_resources[] = {
|
||||
|
||||
static u64 udc_dma_mask = ~(u32)0;
|
||||
|
||||
struct platform_device pxa_device_udc = {
|
||||
.name = "pxa2xx-udc",
|
||||
struct platform_device pxa25x_device_udc = {
|
||||
.name = "pxa25x-udc",
|
||||
.id = -1,
|
||||
.resource = pxa2xx_udc_resources,
|
||||
.num_resources = ARRAY_SIZE(pxa2xx_udc_resources),
|
||||
.dev = {
|
||||
.platform_data = &pxa_udc_info,
|
||||
.dma_mask = &udc_dma_mask,
|
||||
}
|
||||
};
|
||||
|
||||
struct platform_device pxa27x_device_udc = {
|
||||
.name = "pxa27x-udc",
|
||||
.id = -1,
|
||||
.resource = pxa2xx_udc_resources,
|
||||
.num_resources = ARRAY_SIZE(pxa2xx_udc_resources),
|
||||
@@ -233,8 +247,15 @@ struct platform_device pxa_device_i2c = {
|
||||
.num_resources = ARRAY_SIZE(pxai2c_resources),
|
||||
};
|
||||
|
||||
static unsigned long pxa27x_i2c_mfp_cfg[] = {
|
||||
GPIO117_I2C_SCL,
|
||||
GPIO118_I2C_SDA,
|
||||
};
|
||||
|
||||
void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
|
||||
{
|
||||
if (cpu_is_pxa27x())
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(pxa27x_i2c_mfp_cfg));
|
||||
pxa_register_device(&pxa_device_i2c, info);
|
||||
}
|
||||
|
||||
@@ -278,8 +299,69 @@ struct platform_device pxa_device_rtc = {
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct resource pxa_ac97_resources[] = {
|
||||
[0] = {
|
||||
.start = 0x40500000,
|
||||
.end = 0x40500000 + 0xfff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = IRQ_AC97,
|
||||
.end = IRQ_AC97,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static u64 pxa_ac97_dmamask = 0xffffffffUL;
|
||||
|
||||
struct platform_device pxa_device_ac97 = {
|
||||
.name = "pxa2xx-ac97",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &pxa_ac97_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(pxa_ac97_resources),
|
||||
.resource = pxa_ac97_resources,
|
||||
};
|
||||
|
||||
void __init pxa_set_ac97_info(pxa2xx_audio_ops_t *ops)
|
||||
{
|
||||
pxa_register_device(&pxa_device_ac97, ops);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PXA25x
|
||||
|
||||
static struct resource pxa25x_resource_pwm0[] = {
|
||||
[0] = {
|
||||
.start = 0x40b00000,
|
||||
.end = 0x40b0000f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device pxa25x_device_pwm0 = {
|
||||
.name = "pxa25x-pwm",
|
||||
.id = 0,
|
||||
.resource = pxa25x_resource_pwm0,
|
||||
.num_resources = ARRAY_SIZE(pxa25x_resource_pwm0),
|
||||
};
|
||||
|
||||
static struct resource pxa25x_resource_pwm1[] = {
|
||||
[0] = {
|
||||
.start = 0x40c00000,
|
||||
.end = 0x40c0000f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device pxa25x_device_pwm1 = {
|
||||
.name = "pxa25x-pwm",
|
||||
.id = 1,
|
||||
.resource = pxa25x_resource_pwm1,
|
||||
.num_resources = ARRAY_SIZE(pxa25x_resource_pwm1),
|
||||
};
|
||||
|
||||
static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32);
|
||||
|
||||
static struct resource pxa25x_resource_ssp[] = {
|
||||
@@ -568,6 +650,36 @@ struct platform_device pxa27x_device_ssp3 = {
|
||||
.num_resources = ARRAY_SIZE(pxa27x_resource_ssp3),
|
||||
};
|
||||
|
||||
static struct resource pxa27x_resource_pwm0[] = {
|
||||
[0] = {
|
||||
.start = 0x40b00000,
|
||||
.end = 0x40b0001f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device pxa27x_device_pwm0 = {
|
||||
.name = "pxa27x-pwm",
|
||||
.id = 0,
|
||||
.resource = pxa27x_resource_pwm0,
|
||||
.num_resources = ARRAY_SIZE(pxa27x_resource_pwm0),
|
||||
};
|
||||
|
||||
static struct resource pxa27x_resource_pwm1[] = {
|
||||
[0] = {
|
||||
.start = 0x40c00000,
|
||||
.end = 0x40c0001f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device pxa27x_device_pwm1 = {
|
||||
.name = "pxa27x-pwm",
|
||||
.id = 1,
|
||||
.resource = pxa27x_resource_pwm1,
|
||||
.num_resources = ARRAY_SIZE(pxa27x_resource_pwm1),
|
||||
};
|
||||
|
||||
static struct resource pxa27x_resource_camera[] = {
|
||||
[0] = {
|
||||
.start = 0x50000000,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
extern struct platform_device pxa_device_mci;
|
||||
extern struct platform_device pxa3xx_device_mci2;
|
||||
extern struct platform_device pxa3xx_device_mci3;
|
||||
extern struct platform_device pxa_device_udc;
|
||||
extern struct platform_device pxa25x_device_udc;
|
||||
extern struct platform_device pxa27x_device_udc;
|
||||
extern struct platform_device pxa_device_fb;
|
||||
extern struct platform_device pxa_device_ffuart;
|
||||
extern struct platform_device pxa_device_btuart;
|
||||
@@ -11,6 +12,7 @@ extern struct platform_device pxa_device_i2c;
|
||||
extern struct platform_device pxa_device_i2s;
|
||||
extern struct platform_device pxa_device_ficp;
|
||||
extern struct platform_device pxa_device_rtc;
|
||||
extern struct platform_device pxa_device_ac97;
|
||||
|
||||
extern struct platform_device pxa27x_device_i2c_power;
|
||||
extern struct platform_device pxa27x_device_ohci;
|
||||
@@ -24,4 +26,9 @@ extern struct platform_device pxa27x_device_ssp2;
|
||||
extern struct platform_device pxa27x_device_ssp3;
|
||||
extern struct platform_device pxa3xx_device_ssp4;
|
||||
|
||||
extern struct platform_device pxa25x_device_pwm0;
|
||||
extern struct platform_device pxa25x_device_pwm1;
|
||||
extern struct platform_device pxa27x_device_pwm0;
|
||||
extern struct platform_device pxa27x_device_pwm1;
|
||||
|
||||
void __init pxa_register_device(struct platform_device *dev, void *data);
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-gpio.h>
|
||||
#include <asm/arch/pxa27x-udc.h>
|
||||
#include <asm/arch/audio.h>
|
||||
#include <asm/arch/pxafb.h>
|
||||
#include <asm/arch/ohci.h>
|
||||
#include <asm/arch/mmc.h>
|
||||
@@ -72,12 +74,6 @@ static struct platform_device em_x270_dm9k = {
|
||||
}
|
||||
};
|
||||
|
||||
/* audio device */
|
||||
static struct platform_device em_x270_audio = {
|
||||
.name = "pxa2xx-ac97",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
/* WM9712 touchscreen controller. Hopefully the driver will make it to
|
||||
* the mainstream sometime */
|
||||
static struct platform_device em_x270_ts = {
|
||||
@@ -217,7 +213,6 @@ static struct platform_device em_x270_nand = {
|
||||
/* platform devices */
|
||||
static struct platform_device *platform_devices[] __initdata = {
|
||||
&em_x270_dm9k,
|
||||
&em_x270_audio,
|
||||
&em_x270_ts,
|
||||
&em_x270_rtc,
|
||||
&em_x270_nand,
|
||||
@@ -325,6 +320,7 @@ static void __init em_x270_init(void)
|
||||
|
||||
/* register EM-X270 platform devices */
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
pxa_set_ac97_info(NULL);
|
||||
|
||||
/* set MCI and OHCI platform parameters */
|
||||
pxa_set_mci_info(&em_x270_mci_platform_data);
|
||||
|
||||
@@ -59,23 +59,6 @@ unsigned int get_memclk_frequency_10khz(void)
|
||||
}
|
||||
EXPORT_SYMBOL(get_memclk_frequency_10khz);
|
||||
|
||||
/*
|
||||
* Routine to safely enable or disable a clock in the CKEN
|
||||
*/
|
||||
void __pxa_set_cken(int clock, int enable)
|
||||
{
|
||||
unsigned long flags;
|
||||
local_irq_save(flags);
|
||||
|
||||
if (enable)
|
||||
CKEN |= (1 << clock);
|
||||
else
|
||||
CKEN &= ~(1 << clock);
|
||||
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
EXPORT_SYMBOL(__pxa_set_cken);
|
||||
|
||||
/*
|
||||
* Intel PXA2xx internal register mapping.
|
||||
*
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach/irq.h>
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-gpio.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
|
||||
#include <asm/types.h>
|
||||
#include <asm/setup.h>
|
||||
@@ -134,9 +135,12 @@ static struct sys_device lpd270_irq_device = {
|
||||
|
||||
static int __init lpd270_irq_device_init(void)
|
||||
{
|
||||
int ret = sysdev_class_register(&lpd270_irq_sysclass);
|
||||
if (ret == 0)
|
||||
ret = sysdev_register(&lpd270_irq_device);
|
||||
int ret = -ENODEV;
|
||||
if (machine_is_logicpd_pxa270()) {
|
||||
ret = sysdev_class_register(&lpd270_irq_sysclass);
|
||||
if (ret == 0)
|
||||
ret = sysdev_register(&lpd270_irq_device);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -164,11 +168,6 @@ static struct platform_device smc91x_device = {
|
||||
.resource = smc91x_resources,
|
||||
};
|
||||
|
||||
static struct platform_device lpd270_audio_device = {
|
||||
.name = "pxa2xx-ac97",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct resource lpd270_flash_resources[] = {
|
||||
[0] = {
|
||||
.start = PXA_CS0_PHYS,
|
||||
@@ -233,21 +232,20 @@ static struct platform_device lpd270_flash_device[2] = {
|
||||
},
|
||||
};
|
||||
|
||||
static void lpd270_backlight_power(int on)
|
||||
{
|
||||
if (on) {
|
||||
pxa_gpio_mode(GPIO16_PWM0_MD);
|
||||
pxa_set_cken(CKEN_PWM0, 1);
|
||||
PWM_CTRL0 = 0;
|
||||
PWM_PWDUTY0 = 0x3ff;
|
||||
PWM_PERVAL0 = 0x3ff;
|
||||
} else {
|
||||
PWM_CTRL0 = 0;
|
||||
PWM_PWDUTY0 = 0x0;
|
||||
PWM_PERVAL0 = 0x3FF;
|
||||
pxa_set_cken(CKEN_PWM0, 0);
|
||||
}
|
||||
}
|
||||
static struct platform_pwm_backlight_data lpd270_backlight_data = {
|
||||
.pwm_id = 0,
|
||||
.max_brightness = 1,
|
||||
.dft_brightness = 1,
|
||||
.pwm_period_ns = 78770,
|
||||
};
|
||||
|
||||
static struct platform_device lpd270_backlight_device = {
|
||||
.name = "pwm-backlight",
|
||||
.dev = {
|
||||
.parent = &pxa27x_device_pwm0.dev,
|
||||
.platform_data = &lpd270_backlight_data,
|
||||
},
|
||||
};
|
||||
|
||||
/* 5.7" TFT QVGA (LoLo display number 1) */
|
||||
static struct pxafb_mode_info sharp_lq057q3dc02_mode = {
|
||||
@@ -269,7 +267,6 @@ static struct pxafb_mach_info sharp_lq057q3dc02 = {
|
||||
.num_modes = 1,
|
||||
.lccr0 = 0x07800080,
|
||||
.lccr3 = 0x00400000,
|
||||
.pxafb_backlight_power = lpd270_backlight_power,
|
||||
};
|
||||
|
||||
/* 12.1" TFT SVGA (LoLo display number 2) */
|
||||
@@ -292,7 +289,6 @@ static struct pxafb_mach_info sharp_lq121s1dg31 = {
|
||||
.num_modes = 1,
|
||||
.lccr0 = 0x07800080,
|
||||
.lccr3 = 0x00400000,
|
||||
.pxafb_backlight_power = lpd270_backlight_power,
|
||||
};
|
||||
|
||||
/* 3.6" TFT QVGA (LoLo display number 3) */
|
||||
@@ -315,7 +311,6 @@ static struct pxafb_mach_info sharp_lq036q1da01 = {
|
||||
.num_modes = 1,
|
||||
.lccr0 = 0x07800080,
|
||||
.lccr3 = 0x00400000,
|
||||
.pxafb_backlight_power = lpd270_backlight_power,
|
||||
};
|
||||
|
||||
/* 6.4" TFT VGA (LoLo display number 5) */
|
||||
@@ -338,7 +333,6 @@ static struct pxafb_mach_info sharp_lq64d343 = {
|
||||
.num_modes = 1,
|
||||
.lccr0 = 0x07800080,
|
||||
.lccr3 = 0x00400000,
|
||||
.pxafb_backlight_power = lpd270_backlight_power,
|
||||
};
|
||||
|
||||
/* 10.4" TFT VGA (LoLo display number 7) */
|
||||
@@ -361,7 +355,6 @@ static struct pxafb_mach_info sharp_lq10d368 = {
|
||||
.num_modes = 1,
|
||||
.lccr0 = 0x07800080,
|
||||
.lccr3 = 0x00400000,
|
||||
.pxafb_backlight_power = lpd270_backlight_power,
|
||||
};
|
||||
|
||||
/* 3.5" TFT QVGA (LoLo display number 8) */
|
||||
@@ -384,7 +377,6 @@ static struct pxafb_mach_info sharp_lq035q7db02_20 = {
|
||||
.num_modes = 1,
|
||||
.lccr0 = 0x07800080,
|
||||
.lccr3 = 0x00400000,
|
||||
.pxafb_backlight_power = lpd270_backlight_power,
|
||||
};
|
||||
|
||||
static struct pxafb_mach_info *lpd270_lcd_to_use;
|
||||
@@ -414,7 +406,7 @@ __setup("lcd=", lpd270_set_lcd);
|
||||
|
||||
static struct platform_device *platform_devices[] __initdata = {
|
||||
&smc91x_device,
|
||||
&lpd270_audio_device,
|
||||
&lpd270_backlight_device,
|
||||
&lpd270_flash_device[0],
|
||||
&lpd270_flash_device[1],
|
||||
};
|
||||
@@ -454,9 +446,12 @@ static void __init lpd270_init(void)
|
||||
* On LogicPD PXA270, we route AC97_SYSCLK via GPIO45.
|
||||
*/
|
||||
pxa_gpio_mode(GPIO45_SYSCLK_AC97_MD);
|
||||
pxa_gpio_mode(GPIO16_PWM0_MD);
|
||||
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
|
||||
pxa_set_ac97_info(NULL);
|
||||
|
||||
if (lpd270_lcd_to_use != NULL)
|
||||
set_pxa_fb_info(lpd270_lcd_to_use);
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/pxa2xx-regs.h>
|
||||
#include <asm/arch/mfp-pxa25x.h>
|
||||
#include <asm/arch/audio.h>
|
||||
#include <asm/arch/lubbock.h>
|
||||
#include <asm/arch/udc.h>
|
||||
#include <asm/arch/irda.h>
|
||||
@@ -196,11 +197,6 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
|
||||
// no D+ pullup; lubbock can't connect/disconnect in software
|
||||
};
|
||||
|
||||
static struct platform_device lub_audio_device = {
|
||||
.name = "pxa2xx-ac97",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct resource sa1111_resources[] = {
|
||||
[0] = {
|
||||
.start = 0x10000000,
|
||||
@@ -368,7 +364,6 @@ static struct platform_device lubbock_flash_device[2] = {
|
||||
|
||||
static struct platform_device *devices[] __initdata = {
|
||||
&sa1111_device,
|
||||
&lub_audio_device,
|
||||
&smc91x_device,
|
||||
&lubbock_flash_device[0],
|
||||
&lubbock_flash_device[1],
|
||||
@@ -494,6 +489,7 @@ static void __init lubbock_init(void)
|
||||
set_pxa_fb_info(&sharp_lm8v31);
|
||||
pxa_set_mci_info(&lubbock_mci_platform_data);
|
||||
pxa_set_ficp_info(&lubbock_ficp_platform_data);
|
||||
pxa_set_ac97_info(NULL);
|
||||
|
||||
lubbock_flash_data[0].width = lubbock_flash_data[1].width =
|
||||
(BOOT_DEF & 1) ? 2 : 4;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user