Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 210658
b: refs/heads/master
c: edc805b
h: refs/heads/master
v: v3
  • Loading branch information
Geert Uytterhoeven committed Sep 13, 2010
1 parent 4389f41 commit 38cbe28
Show file tree
Hide file tree
Showing 32 changed files with 661 additions and 300 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: ab22c17cd2a9840b4457a656fd377c73ec4f518d
refs/heads/master: edc805b7c5e45c3d7202cea5239985d204178e24
46 changes: 7 additions & 39 deletions trunk/arch/ia64/kernel/fsys.S
Original file line number Diff line number Diff line change
Expand Up @@ -424,26 +424,14 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
andcm r14=r14,r17 // filter out SIGKILL & SIGSTOP

#ifdef CONFIG_SMP
// __ticket_spin_trylock(r31)
ld4 r17=[r31]
mov r8=EINVAL // default to EINVAL
;;
extr r9=r17,17,15
;;
xor r18=r17,r9
adds r19=1,r17
;;
extr.u r18=r18,0,15
mov r17=1
;;
cmp.eq p0,p7=0,r18
(p7) br.cond.spnt.many .lock_contention
mov.m ar.ccv=r17
;;
cmpxchg4.acq r9=[r31],r19,ar.ccv
cmpxchg4.acq r18=[r31],r17,ar.ccv // try to acquire the lock
mov r8=EINVAL // default to EINVAL
;;
cmp4.eq p0,p7=r9,r17
(p7) br.cond.spnt.many .lock_contention
ld8 r3=[r2] // re-read current->blocked now that we hold the lock
cmp4.ne p6,p0=r18,r0
(p6) br.cond.spnt.many .lock_contention
;;
#else
ld8 r3=[r2] // re-read current->blocked now that we hold the lock
Expand Down Expand Up @@ -502,17 +490,7 @@ EX(.fail_efault, ld8 r14=[r33]) // r14 <- *set
(p6) br.cond.spnt.few 1b // yes -> retry

#ifdef CONFIG_SMP
// __ticket_spin_unlock(r31)
adds r31=2,r31
;;
ld2.bias r2=[r31]
mov r3=65534
;;
adds r2=2,r2
;;
and r3=r3,r2
;;
st2.rel [r31]=r3
st4.rel [r31]=r0 // release the lock
#endif
SSM_PSR_I(p0, p9, r31)
;;
Expand All @@ -534,17 +512,7 @@ EX(.fail_efault, (p15) st8 [r34]=r3)

.sig_pending:
#ifdef CONFIG_SMP
// __ticket_spin_unlock(r31)
adds r31=2,r31
;;
ld2.bias r2=[r31]
mov r3=65534
;;
adds r2=2,r2
;;
and r3=r3,r2
;;
st2.rel [r31]=r3
st4.rel [r31]=r0 // release the lock
#endif
SSM_PSR_I(p0, p9, r17)
;;
Expand Down
5 changes: 4 additions & 1 deletion trunk/arch/m68k/include/asm/unistd.h
Original file line number Diff line number Diff line change
Expand Up @@ -340,10 +340,13 @@
#define __NR_set_thread_area 334
#define __NR_atomic_cmpxchg_32 335
#define __NR_atomic_barrier 336
#define __NR_fanotify_init 337
#define __NR_fanotify_mark 338
#define __NR_prlimit64 339

#ifdef __KERNEL__

#define NR_syscalls 337
#define NR_syscalls 340

#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
Expand Down
3 changes: 3 additions & 0 deletions trunk/arch/m68k/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -765,4 +765,7 @@ sys_call_table:
.long sys_set_thread_area
.long sys_atomic_cmpxchg_32 /* 335 */
.long sys_atomic_barrier
.long sys_fanotify_init
.long sys_fanotify_mark
.long sys_prlimit64

3 changes: 3 additions & 0 deletions trunk/arch/m68knommu/kernel/syscalltable.S
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,9 @@ ENTRY(sys_call_table)
.long sys_set_thread_area
.long sys_atomic_cmpxchg_32 /* 335 */
.long sys_atomic_barrier
.long sys_fanotify_init
.long sys_fanotify_mark
.long sys_prlimit64

.rept NR_syscalls-(.-sys_call_table)/4
.long sys_ni_syscall
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/net/ll_temac_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
#include <linux/of_device.h>
#include <linux/of_mdio.h>
#include <linux/of_platform.h>
#include <linux/of_address.h>
#include <linux/skbuff.h>
#include <linux/spinlock.h>
#include <linux/tcp.h> /* needed for sizeof(tcphdr) */
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/net/ll_temac_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include <linux/phy.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_address.h>
#include <linux/slab.h>
#include <linux/of_mdio.h>

Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/serial/mpc52xx_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,6 @@ static int __init mpc512x_psc_fifoc_init(void)
psc_fifoc = of_iomap(np, 0);
if (!psc_fifoc) {
pr_err("%s: Can't map FIFOC\n", __func__);
of_node_put(np);
return -ENODEV;
}

Expand Down
16 changes: 7 additions & 9 deletions trunk/drivers/spi/amba-pl022.c
Original file line number Diff line number Diff line change
Expand Up @@ -503,9 +503,8 @@ static void giveback(struct pl022 *pl022)
msg->state = NULL;
if (msg->complete)
msg->complete(msg->context);
/* This message is completed, so let's turn off the clocks! */
/* This message is completed, so let's turn off the clock! */
clk_disable(pl022->clk);
amba_pclk_disable(pl022->adev);
}

/**
Expand Down Expand Up @@ -1140,10 +1139,9 @@ static void pump_messages(struct work_struct *work)
/* Setup the SPI using the per chip configuration */
pl022->cur_chip = spi_get_ctldata(pl022->cur_msg->spi);
/*
* We enable the clocks here, then the clocks will be disabled when
* We enable the clock here, then the clock will be disabled when
* giveback() is called in each method (poll/interrupt/DMA)
*/
amba_pclk_enable(pl022->adev);
clk_enable(pl022->clk);
restore_state(pl022);
flush(pl022);
Expand Down Expand Up @@ -1788,9 +1786,11 @@ pl022_probe(struct amba_device *adev, struct amba_id *id)
}

/* Disable SSP */
clk_enable(pl022->clk);
writew((readw(SSP_CR1(pl022->virtbase)) & (~SSP_CR1_MASK_SSE)),
SSP_CR1(pl022->virtbase));
load_ssp_default_config(pl022);
clk_disable(pl022->clk);

status = request_irq(adev->irq[0], pl022_interrupt_handler, 0, "pl022",
pl022);
Expand Down Expand Up @@ -1818,8 +1818,6 @@ pl022_probe(struct amba_device *adev, struct amba_id *id)
goto err_spi_register;
}
dev_dbg(dev, "probe succeded\n");
/* Disable the silicon block pclk and clock it when needed */
amba_pclk_disable(adev);
return 0;

err_spi_register:
Expand Down Expand Up @@ -1881,9 +1879,9 @@ static int pl022_suspend(struct amba_device *adev, pm_message_t state)
return status;
}

amba_pclk_enable(adev);
clk_enable(pl022->clk);
load_ssp_default_config(pl022);
amba_pclk_disable(adev);
clk_disable(pl022->clk);
dev_dbg(&adev->dev, "suspended\n");
return 0;
}
Expand Down Expand Up @@ -1983,7 +1981,7 @@ static int __init pl022_init(void)
return amba_driver_register(&pl022_driver);
}

subsys_initcall(pl022_init);
module_init(pl022_init);

static void __exit pl022_exit(void)
{
Expand Down
24 changes: 13 additions & 11 deletions trunk/drivers/spi/dw_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,10 @@ static void flush(struct dw_spi *dws)
wait_till_not_busy(dws);
}

static void null_cs_control(u32 command)
{
}

static int null_writer(struct dw_spi *dws)
{
u8 n_bytes = dws->n_bytes;
Expand Down Expand Up @@ -318,7 +322,7 @@ static void giveback(struct dw_spi *dws)
struct spi_transfer,
transfer_list);

if (!last_transfer->cs_change && dws->cs_control)
if (!last_transfer->cs_change)
dws->cs_control(MRST_SPI_DEASSERT);

msg->state = NULL;
Expand Down Expand Up @@ -392,11 +396,6 @@ static irqreturn_t interrupt_transfer(struct dw_spi *dws)
static irqreturn_t dw_spi_irq(int irq, void *dev_id)
{
struct dw_spi *dws = dev_id;
u16 irq_status, irq_mask = 0x3f;

irq_status = dw_readw(dws, isr) & irq_mask;
if (!irq_status)
return IRQ_NONE;

if (!dws->cur_msg) {
spi_mask_intr(dws, SPI_INT_TXEI);
Expand Down Expand Up @@ -545,13 +544,13 @@ static void pump_transfers(unsigned long data)
*/
if (dws->cs_control) {
if (dws->rx && dws->tx)
chip->tmode = SPI_TMOD_TR;
chip->tmode = 0x00;
else if (dws->rx)
chip->tmode = SPI_TMOD_RO;
chip->tmode = 0x02;
else
chip->tmode = SPI_TMOD_TO;
chip->tmode = 0x01;

cr0 &= ~SPI_TMOD_MASK;
cr0 &= ~(0x3 << SPI_MODE_OFFSET);
cr0 |= (chip->tmode << SPI_TMOD_OFFSET);
}

Expand Down Expand Up @@ -700,6 +699,9 @@ static int dw_spi_setup(struct spi_device *spi)
chip = kzalloc(sizeof(struct chip_data), GFP_KERNEL);
if (!chip)
return -ENOMEM;

chip->cs_control = null_cs_control;
chip->enable_dma = 0;
}

/*
Expand Down Expand Up @@ -881,7 +883,7 @@ int __devinit dw_spi_add_host(struct dw_spi *dws)
dws->dma_inited = 0;
dws->dma_addr = (dma_addr_t)(dws->paddr + 0x60);

ret = request_irq(dws->irq, dw_spi_irq, IRQF_SHARED,
ret = request_irq(dws->irq, dw_spi_irq, 0,
"dw_spi", dws);
if (ret < 0) {
dev_err(&master->dev, "can not get IRQ\n");
Expand Down
9 changes: 6 additions & 3 deletions trunk/drivers/spi/spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -554,9 +554,11 @@ int spi_register_master(struct spi_master *master)
EXPORT_SYMBOL_GPL(spi_register_master);


static int __unregister(struct device *dev, void *null)
static int __unregister(struct device *dev, void *master_dev)
{
spi_unregister_device(to_spi_device(dev));
/* note: before about 2.6.14-rc1 this would corrupt memory: */
if (dev != master_dev)
spi_unregister_device(to_spi_device(dev));
return 0;
}

Expand All @@ -574,7 +576,8 @@ void spi_unregister_master(struct spi_master *master)
{
int dummy;

dummy = device_for_each_child(&master->dev, NULL, __unregister);
dummy = device_for_each_child(master->dev.parent, &master->dev,
__unregister);
device_unregister(&master->dev);
}
EXPORT_SYMBOL_GPL(spi_unregister_master);
Expand Down
37 changes: 12 additions & 25 deletions trunk/drivers/spi/spi_s3c64xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,6 @@ static void flush_fifo(struct s3c64xx_spi_driver_data *sdd)
val = readl(regs + S3C64XX_SPI_STATUS);
} while (TX_FIFO_LVL(val, sci) && loops--);

if (loops == 0)
dev_warn(&sdd->pdev->dev, "Timed out flushing TX FIFO\n");

/* Flush RxFIFO*/
loops = msecs_to_loops(1);
do {
Expand All @@ -213,9 +210,6 @@ static void flush_fifo(struct s3c64xx_spi_driver_data *sdd)
break;
} while (loops--);

if (loops == 0)
dev_warn(&sdd->pdev->dev, "Timed out flushing RX FIFO\n");

val = readl(regs + S3C64XX_SPI_CH_CFG);
val &= ~S3C64XX_SPI_CH_SW_RST;
writel(val, regs + S3C64XX_SPI_CH_CFG);
Expand Down Expand Up @@ -326,17 +320,16 @@ static int wait_for_xfer(struct s3c64xx_spi_driver_data *sdd,

/* millisecs to xfer 'len' bytes @ 'cur_speed' */
ms = xfer->len * 8 * 1000 / sdd->cur_speed;
ms += 10; /* some tolerance */
ms += 5; /* some tolerance */

if (dma_mode) {
val = msecs_to_jiffies(ms) + 10;
val = wait_for_completion_timeout(&sdd->xfer_completion, val);
} else {
u32 status;
val = msecs_to_loops(ms);
do {
status = readl(regs + S3C64XX_SPI_STATUS);
} while (RX_FIFO_LVL(status, sci) < xfer->len && --val);
val = readl(regs + S3C64XX_SPI_STATUS);
} while (RX_FIFO_LVL(val, sci) < xfer->len && --val);
}

if (!val)
Expand Down Expand Up @@ -454,8 +447,8 @@ static void s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd)
writel(val, regs + S3C64XX_SPI_CLK_CFG);
}

static void s3c64xx_spi_dma_rxcb(struct s3c2410_dma_chan *chan, void *buf_id,
int size, enum s3c2410_dma_buffresult res)
void s3c64xx_spi_dma_rxcb(struct s3c2410_dma_chan *chan, void *buf_id,
int size, enum s3c2410_dma_buffresult res)
{
struct s3c64xx_spi_driver_data *sdd = buf_id;
unsigned long flags;
Expand All @@ -474,8 +467,8 @@ static void s3c64xx_spi_dma_rxcb(struct s3c2410_dma_chan *chan, void *buf_id,
spin_unlock_irqrestore(&sdd->lock, flags);
}

static void s3c64xx_spi_dma_txcb(struct s3c2410_dma_chan *chan, void *buf_id,
int size, enum s3c2410_dma_buffresult res)
void s3c64xx_spi_dma_txcb(struct s3c2410_dma_chan *chan, void *buf_id,
int size, enum s3c2410_dma_buffresult res)
{
struct s3c64xx_spi_driver_data *sdd = buf_id;
unsigned long flags;
Expand Down Expand Up @@ -515,9 +508,8 @@ static int s3c64xx_spi_map_mssg(struct s3c64xx_spi_driver_data *sdd,
list_for_each_entry(xfer, &msg->transfers, transfer_list) {

if (xfer->tx_buf != NULL) {
xfer->tx_dma = dma_map_single(dev,
(void *)xfer->tx_buf, xfer->len,
DMA_TO_DEVICE);
xfer->tx_dma = dma_map_single(dev, xfer->tx_buf,
xfer->len, DMA_TO_DEVICE);
if (dma_mapping_error(dev, xfer->tx_dma)) {
dev_err(dev, "dma_map_single Tx failed\n");
xfer->tx_dma = XFER_DMAADDR_INVALID;
Expand Down Expand Up @@ -927,13 +919,6 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
return -ENODEV;
}

sci = pdev->dev.platform_data;
if (!sci->src_clk_name) {
dev_err(&pdev->dev,
"Board init must call s3c64xx_spi_set_info()\n");
return -EINVAL;
}

/* Check for availability of necessary resource */

dmatx_res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
Expand Down Expand Up @@ -961,6 +946,8 @@ static int __init s3c64xx_spi_probe(struct platform_device *pdev)
return -ENOMEM;
}

sci = pdev->dev.platform_data;

platform_set_drvdata(pdev, master);

sdd = spi_master_get_devdata(master);
Expand Down Expand Up @@ -1183,7 +1170,7 @@ static int __init s3c64xx_spi_init(void)
{
return platform_driver_probe(&s3c64xx_spi_driver, s3c64xx_spi_probe);
}
subsys_initcall(s3c64xx_spi_init);
module_init(s3c64xx_spi_init);

static void __exit s3c64xx_spi_exit(void)
{
Expand Down
Loading

0 comments on commit 38cbe28

Please sign in to comment.