mirror of https://gitee.com/openkylin/linux.git
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] 4835/1: Fix stale comment in struct machine_desc description [ARM] 4829/1: add .get method to pxa-cpufreq to silence a warning [ARM] 4828/1: fix 3 warnings in drivers/video/pxafb.c [ARM] 4827/1: fix two warnings in drivers/i2c/busses/i2c-pxa.c [ARM] 4826/1: Orion: Register the RTC interrupt on the TS-209 [ARM] pxa: fix clock lookup to find specific device clocks
This commit is contained in:
commit
06165752c8
|
@ -192,9 +192,13 @@ static struct mv643xx_eth_platform_data qnap_ts209_eth_data = {
|
|||
/*****************************************************************************
|
||||
* RTC S35390A on I2C bus
|
||||
****************************************************************************/
|
||||
|
||||
#define TS209_RTC_GPIO 3
|
||||
|
||||
static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = {
|
||||
.driver_name = "rtc-s35390a",
|
||||
.addr = 0x30,
|
||||
.irq = 0,
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -328,7 +332,18 @@ static void __init qnap_ts209_init(void)
|
|||
|
||||
platform_add_devices(qnap_ts209_devices,
|
||||
ARRAY_SIZE(qnap_ts209_devices));
|
||||
|
||||
/* Get RTC IRQ and register the chip */
|
||||
if (gpio_request(TS209_RTC_GPIO, "rtc") == 0) {
|
||||
if (gpio_direction_input(TS209_RTC_GPIO) == 0)
|
||||
qnap_ts209_i2c_rtc.irq = gpio_to_irq(TS209_RTC_GPIO);
|
||||
else
|
||||
gpio_free(TS209_RTC_GPIO);
|
||||
}
|
||||
if (qnap_ts209_i2c_rtc.irq == 0)
|
||||
pr_warning("qnap_ts209_init: failed to get RTC IRQ\n");
|
||||
i2c_register_board_info(0, &qnap_ts209_i2c_rtc, 1);
|
||||
|
||||
orion_eth_init(&qnap_ts209_eth_data);
|
||||
orion_sata_init(&qnap_ts209_sata_data);
|
||||
}
|
||||
|
|
|
@ -23,18 +23,27 @@ static LIST_HEAD(clocks);
|
|||
static DEFINE_MUTEX(clocks_mutex);
|
||||
static DEFINE_SPINLOCK(clocks_lock);
|
||||
|
||||
static struct clk *clk_lookup(struct device *dev, const char *id)
|
||||
{
|
||||
struct clk *p;
|
||||
|
||||
list_for_each_entry(p, &clocks, node)
|
||||
if (strcmp(id, p->name) == 0 && p->dev == dev)
|
||||
return p;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct clk *clk_get(struct device *dev, const char *id)
|
||||
{
|
||||
struct clk *p, *clk = ERR_PTR(-ENOENT);
|
||||
|
||||
mutex_lock(&clocks_mutex);
|
||||
list_for_each_entry(p, &clocks, node) {
|
||||
if (strcmp(id, p->name) == 0 &&
|
||||
(p->dev == NULL || p->dev == dev)) {
|
||||
clk = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
p = clk_lookup(dev, id);
|
||||
if (!p)
|
||||
p = clk_lookup(NULL, id);
|
||||
if (p)
|
||||
clk = p;
|
||||
mutex_unlock(&clocks_mutex);
|
||||
|
||||
return clk;
|
||||
|
|
|
@ -134,7 +134,7 @@ static int pxa_set_target(struct cpufreq_policy *policy,
|
|||
struct cpufreq_frequency_table *pxa_freqs_table;
|
||||
pxa_freqs_t *pxa_freq_settings;
|
||||
struct cpufreq_freqs freqs;
|
||||
int idx;
|
||||
unsigned int idx;
|
||||
unsigned long flags;
|
||||
unsigned int unused, preset_mdrefr, postset_mdrefr;
|
||||
void *ramstart = phys_to_virt(0xa0000000);
|
||||
|
@ -233,6 +233,11 @@ static int pxa_set_target(struct cpufreq_policy *policy,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int pxa_cpufreq_get(unsigned int cpu)
|
||||
{
|
||||
return get_clk_frequency_khz(0);
|
||||
}
|
||||
|
||||
static int pxa_cpufreq_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
int i;
|
||||
|
@ -269,6 +274,7 @@ static struct cpufreq_driver pxa_cpufreq_driver = {
|
|||
.verify = pxa_verify_policy,
|
||||
.target = pxa_set_target,
|
||||
.init = pxa_cpufreq_init,
|
||||
.get = pxa_cpufreq_get,
|
||||
.name = "PXA25x",
|
||||
};
|
||||
|
||||
|
|
|
@ -138,11 +138,13 @@ static const struct bits icr_bits[] = {
|
|||
PXA_BIT(ICR_UR, "UR", "ur"),
|
||||
};
|
||||
|
||||
#ifdef CONFIG_I2C_PXA_SLAVE
|
||||
static void decode_ICR(unsigned int val)
|
||||
{
|
||||
decode_bits(KERN_DEBUG "ICR", icr_bits, ARRAY_SIZE(icr_bits), val);
|
||||
printk("\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned int i2c_debug = DEBUG;
|
||||
|
||||
|
@ -1122,7 +1124,7 @@ static int __init i2c_adap_pxa_init(void)
|
|||
|
||||
static void i2c_adap_pxa_exit(void)
|
||||
{
|
||||
return platform_driver_unregister(&i2c_pxa_driver);
|
||||
platform_driver_unregister(&i2c_pxa_driver);
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
@ -1046,7 +1046,7 @@ pxafb_freq_policy(struct notifier_block *nb, unsigned long val, void *data)
|
|||
switch (val) {
|
||||
case CPUFREQ_ADJUST:
|
||||
case CPUFREQ_INCOMPATIBLE:
|
||||
printk(KERN_DEBUG "min dma period: %d ps, "
|
||||
pr_debug("min dma period: %d ps, "
|
||||
"new clock %d kHz\n", pxafb_display_dma_period(var),
|
||||
policy->max);
|
||||
// TODO: fill in min/max values
|
||||
|
@ -1361,7 +1361,7 @@ static int __init pxafb_parse_options(struct device *dev, char *options)
|
|||
}
|
||||
#endif
|
||||
|
||||
int __init pxafb_probe(struct platform_device *dev)
|
||||
static int __init pxafb_probe(struct platform_device *dev)
|
||||
{
|
||||
struct pxafb_info *fbi;
|
||||
struct pxafb_mach_info *inf;
|
||||
|
@ -1486,7 +1486,7 @@ static struct platform_driver pxafb_driver = {
|
|||
};
|
||||
|
||||
#ifndef MODULE
|
||||
int __devinit pxafb_setup(char *options)
|
||||
static int __devinit pxafb_setup(char *options)
|
||||
{
|
||||
# ifdef CONFIG_FB_PXA_PARAMETERS
|
||||
if (options)
|
||||
|
@ -1501,7 +1501,7 @@ MODULE_PARM_DESC(options, "LCD parameters (see Documentation/fb/pxafb.txt)");
|
|||
# endif
|
||||
#endif
|
||||
|
||||
int __devinit pxafb_init(void)
|
||||
static int __devinit pxafb_init(void)
|
||||
{
|
||||
#ifndef MODULE
|
||||
char *option = NULL;
|
||||
|
|
|
@ -17,7 +17,7 @@ struct sys_timer;
|
|||
struct machine_desc {
|
||||
/*
|
||||
* Note! The first four elements are used
|
||||
* by assembler code in head-armv.S
|
||||
* by assembler code in head.S, head-common.S
|
||||
*/
|
||||
unsigned int nr; /* architecture number */
|
||||
unsigned int phys_io; /* start of physical io */
|
||||
|
|
Loading…
Reference in New Issue