mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: sound/core/memalloc.c
This commit is contained in:
commit
56c5d900db
3711 changed files with 190539 additions and 88192 deletions
|
|
@ -1005,6 +1005,29 @@ static int ftl_writesect(struct mtd_blktrans_dev *dev,
|
|||
return ftl_write((void *)dev, buf, block, 1);
|
||||
}
|
||||
|
||||
static int ftl_discardsect(struct mtd_blktrans_dev *dev,
|
||||
unsigned long sector, unsigned nr_sects)
|
||||
{
|
||||
partition_t *part = (void *)dev;
|
||||
uint32_t bsize = 1 << part->header.EraseUnitSize;
|
||||
|
||||
DEBUG(1, "FTL erase sector %ld for %d sectors\n",
|
||||
sector, nr_sects);
|
||||
|
||||
while (nr_sects) {
|
||||
uint32_t old_addr = part->VirtualBlockMap[sector];
|
||||
if (old_addr != 0xffffffff) {
|
||||
part->VirtualBlockMap[sector] = 0xffffffff;
|
||||
part->EUNInfo[old_addr/bsize].Deleted++;
|
||||
if (set_bam_entry(part, old_addr, 0))
|
||||
return -EIO;
|
||||
}
|
||||
nr_sects--;
|
||||
sector++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*====================================================================*/
|
||||
|
||||
static void ftl_freepart(partition_t *part)
|
||||
|
|
@ -1069,6 +1092,7 @@ static struct mtd_blktrans_ops ftl_tr = {
|
|||
.blksize = SECTOR_SIZE,
|
||||
.readsect = ftl_readsect,
|
||||
.writesect = ftl_writesect,
|
||||
.discard = ftl_discardsect,
|
||||
.getgeo = ftl_getgeo,
|
||||
.add_mtd = ftl_add_mtd,
|
||||
.remove_dev = ftl_remove_dev,
|
||||
|
|
|
|||
|
|
@ -32,6 +32,14 @@ struct mtd_blkcore_priv {
|
|||
spinlock_t queue_lock;
|
||||
};
|
||||
|
||||
static int blktrans_discard_request(struct request_queue *q,
|
||||
struct request *req)
|
||||
{
|
||||
req->cmd_type = REQ_TYPE_LINUX_BLOCK;
|
||||
req->cmd[0] = REQ_LB_OP_DISCARD;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int do_blktrans_request(struct mtd_blktrans_ops *tr,
|
||||
struct mtd_blktrans_dev *dev,
|
||||
struct request *req)
|
||||
|
|
@ -44,6 +52,10 @@ static int do_blktrans_request(struct mtd_blktrans_ops *tr,
|
|||
|
||||
buf = req->buffer;
|
||||
|
||||
if (req->cmd_type == REQ_TYPE_LINUX_BLOCK &&
|
||||
req->cmd[0] == REQ_LB_OP_DISCARD)
|
||||
return !tr->discard(dev, block, nsect);
|
||||
|
||||
if (!blk_fs_request(req))
|
||||
return 0;
|
||||
|
||||
|
|
@ -367,6 +379,10 @@ int register_mtd_blktrans(struct mtd_blktrans_ops *tr)
|
|||
|
||||
tr->blkcore_priv->rq->queuedata = tr;
|
||||
blk_queue_hardsect_size(tr->blkcore_priv->rq, tr->blksize);
|
||||
if (tr->discard)
|
||||
blk_queue_set_discard(tr->blkcore_priv->rq,
|
||||
blktrans_discard_request);
|
||||
|
||||
tr->blkshift = ffs(tr->blksize) - 1;
|
||||
|
||||
tr->blkcore_priv->thread = kthread_run(mtd_blktrans_thread, tr,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
* Error Corrected Code Controller (ECC) - System peripherals regsters.
|
||||
* Based on AT91SAM9260 datasheet revision B.
|
||||
*
|
||||
* Copyright (C) 2007 Andrew Victor
|
||||
* Copyright (C) 2007 Atmel Corporation.
|
||||
*
|
||||
* 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; either version 2 of the License, or (at your
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ static int cmx270_init(void)
|
|||
int mtd_parts_nb = 0;
|
||||
int ret;
|
||||
|
||||
if (!machine_is_armcore())
|
||||
if (!(machine_is_armcore() && cpu_is_pxa27x()))
|
||||
return -ENODEV;
|
||||
|
||||
ret = gpio_request(GPIO_NAND_CS, "NAND CS");
|
||||
|
|
|
|||
Loading…
Reference in a new issue