OK, sync read patch seems to work when applied directly to the kernel tree, e.g. > /usr/src/linux> patch -p1 < onenand-syncread_20050813.patch BBM patch, e.g. > /usr/src/linux> patch -p1 < onenand-bbm_20050818.patch runs through nearly successful. I get a rej in onenand_base.c, line 311 (see attached file). On line 315 you are looking for "return -EAGAIN;", but there's a "return -EIO;" -> patch fails. I don't know what's wrong with line 319/320, the patch fails anyway... Same thing for line 326. Is the following code valid (assuming patch has been run)? > ctrl = this->read_word(this->base + ONENAND_REG_CTRL_STATUS); > if (ctrl & ONENAND_CTRL_ERROR) { > /* It maybe occur at initial bad block */ > DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: controller error = 0x%04x\n", ctrl); > /* Clear other interrupt bits for preventing ECC error */ > interrupt &= ONENAND_INT_MASTER; > } > if (ctrl & ONENAND_CTRL_LOCK) { > DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: it's locked error = 0x%04x\n", ctrl); > return -EACCES; > } > if (interrupt & ONENAND_INT_READ) { > ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS); > if (ecc & ONENAND_ECC_2BIT_ALL) { > DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: ECC error = 0x%04x\n", ecc); > return -EBADMSG; > } > } 1) interrupt &= ONENAND_INT_MASTER instead of return? 2) return -EACCES instead of return -EIO? Bernhard