Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 198537
b: refs/heads/master
c: 119c4b1
h: refs/heads/master
i:
  198535: 8913df4
v: v3
  • Loading branch information
Russell King committed May 24, 2010
1 parent 870e231 commit 3a558ec
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 2 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: d472d1a1c82ade81d2854db2ff4c9694ed66612e
refs/heads/master: 119c4b1257e44d9ec981465ccb80aba427a96dda
4 changes: 3 additions & 1 deletion trunk/arch/arm/include/asm/hardirq.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ typedef struct {

#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */

#if NR_IRQS > 256
#if NR_IRQS > 512
#define HARDIRQ_BITS 10
#elif NR_IRQS > 256
#define HARDIRQ_BITS 9
#else
#define HARDIRQ_BITS 8
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-nomadik/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ static struct clk_lookup lookups[] = {
CLK(&clk_default, "gpio.1"),
CLK(&clk_default, "gpio.2"),
CLK(&clk_default, "gpio.3"),
CLK(&clk_default, "rng"),
};

static int __init clk_init(void)
Expand Down
28 changes: 28 additions & 0 deletions trunk/arch/arm/mach-w90x900/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,33 @@ void nuc900_fb_set_platdata(struct nuc900fb_mach_info *pd)
}
#endif

/* AUDIO controller*/
static u64 nuc900_device_audio_dmamask = -1;
static struct resource nuc900_ac97_resource[] = {
[0] = {
.start = W90X900_PA_ACTL,
.end = W90X900_PA_ACTL + W90X900_SZ_ACTL - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_ACTL,
.end = IRQ_ACTL,
.flags = IORESOURCE_IRQ,
}

};

struct platform_device nuc900_device_audio = {
.name = "nuc900-audio",
.id = -1,
.num_resources = ARRAY_SIZE(nuc900_ac97_resource),
.resource = nuc900_ac97_resource,
.dev = {
.dma_mask = &nuc900_device_audio_dmamask,
.coherent_dma_mask = -1,
}
};

/*Here should be your evb resourse,such as LCD*/

static struct platform_device *nuc900_public_dev[] __initdata = {
Expand All @@ -434,6 +461,7 @@ static struct platform_device *nuc900_public_dev[] __initdata = {
&nuc900_device_emc,
&nuc900_device_spi,
&nuc900_device_wdt,
&nuc900_device_audio,
};

/* Provide adding specific CPU platform devices API */
Expand Down
24 changes: 24 additions & 0 deletions trunk/arch/arm/mach-w90x900/include/mach/mfp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* arch/arm/mach-w90x900/include/mach/mfp.h
*
* Copyright (c) 2010 Nuvoton technology corporation.
*
* Wan ZongShun <mcuos.com@gmail.com>
*
* Based on arch/arm/mach-s3c2410/include/mach/map.h
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation;version 2 of the License.
*
*/

#ifndef __ASM_ARCH_MFP_H
#define __ASM_ARCH_MFP_H

extern void mfp_set_groupf(struct device *dev);
extern void mfp_set_groupc(struct device *dev);
extern void mfp_set_groupi(struct device *dev);
extern void mfp_set_groupg(struct device *dev);

#endif /* __ASM_ARCH_MFP_H */
6 changes: 6 additions & 0 deletions trunk/arch/arm/mach-w90x900/mfp.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,12 @@

#define GPIOG0TO1 (0x03 << 14)
#define GPIOG2TO3 (0x03 << 16)
#define GPIOG22TO23 (0x03 << 22)

#define ENSPI (0x0a << 14)
#define ENI2C0 (0x01 << 14)
#define ENI2C1 (0x01 << 16)
#define ENAC97 (0x02 << 22)

static DEFINE_MUTEX(mfp_mutex);

Expand Down Expand Up @@ -146,6 +149,9 @@ void mfp_set_groupg(struct device *dev)
} else if (strcmp(dev_id, "nuc900-i2c1") == 0) {
mfpen &= ~(GPIOG2TO3);
mfpen |= ENI2C1;/*enable i2c1*/
} else if (strcmp(dev_id, "nuc900-audio") == 0) {
mfpen &= ~(GPIOG22TO23);
mfpen |= ENAC97;/*enable AC97*/
} else {
mfpen &= ~(GPIOG0TO1 | GPIOG2TO3);/*GPIOG[3:0]*/
}
Expand Down
17 changes: 17 additions & 0 deletions trunk/drivers/char/hw_random/nomadik-rng.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
#include <linux/amba/bus.h>
#include <linux/hw_random.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <linux/err.h>

static struct clk *rng_clk;

static int nmk_rng_read(struct hwrng *rng, void *data, size_t max, bool wait)
{
Expand All @@ -40,6 +44,15 @@ static int nmk_rng_probe(struct amba_device *dev, struct amba_id *id)
void __iomem *base;
int ret;

rng_clk = clk_get(&dev->dev, NULL);
if (IS_ERR(rng_clk)) {
dev_err(&dev->dev, "could not get rng clock\n");
ret = PTR_ERR(rng_clk);
return ret;
}

clk_enable(rng_clk);

ret = amba_request_regions(dev, dev->dev.init_name);
if (ret)
return ret;
Expand All @@ -57,6 +70,8 @@ static int nmk_rng_probe(struct amba_device *dev, struct amba_id *id)
iounmap(base);
out_release:
amba_release_regions(dev);
clk_disable(rng_clk);
clk_put(rng_clk);
return ret;
}

Expand All @@ -66,6 +81,8 @@ static int nmk_rng_remove(struct amba_device *dev)
hwrng_unregister(&nmk_rng);
iounmap(base);
amba_release_regions(dev);
clk_disable(rng_clk);
clk_put(rng_clk);
return 0;
}

Expand Down

0 comments on commit 3a558ec

Please sign in to comment.