Commit 827cd9f1 authored by davidcunado-arm's avatar davidcunado-arm Committed by GitHub
Browse files

Merge pull request #1081 from masahir0y/uniphier

uniphier: fix-up for PXs3 SoC
parents 085bac2b 9bdccff4
...@@ -108,7 +108,7 @@ static int uniphier_nand_block_isbad(struct uniphier_nand *nand, int block) ...@@ -108,7 +108,7 @@ static int uniphier_nand_block_isbad(struct uniphier_nand *nand, int block)
/* if possible, save the result for future re-use */ /* if possible, save the result for future re-use */
if (block < ARRAY_SIZE(nand->bbt)) if (block < ARRAY_SIZE(nand->bbt))
nand->bbt[block] = is_bad; nand->bbt[block] = is_bad;
if (is_bad) if (is_bad)
WARN("found bad block at %d. skip.\n", block); WARN("found bad block at %d. skip.\n", block);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#define UNIPHIER_LD11_USB_DESC_BASE 0x30010000 #define UNIPHIER_LD11_USB_DESC_BASE 0x30010000
#define UNIPHIER_LD20_USB_DESC_BASE 0x30014000 #define UNIPHIER_LD20_USB_DESC_BASE 0x30014000
#define UNIPHIER_PXS3_USB_DESC_BASE 0x30014000
#define UNIPHIER_SRB_OCM_CONT 0x61200000 #define UNIPHIER_SRB_OCM_CONT 0x61200000
...@@ -41,6 +42,13 @@ struct uniphier_ld20_op { ...@@ -41,6 +42,13 @@ struct uniphier_ld20_op {
void *dev_desc; void *dev_desc;
}; };
struct uniphier_pxs3_op {
uint8_t __pad[184];
struct uniphier_ld20_trans_op *trans_op;
void *__pad2;
void *dev_desc;
};
static int (*__uniphier_usb_read)(int lba, uintptr_t buf, size_t size); static int (*__uniphier_usb_read)(int lba, uintptr_t buf, size_t size);
static void uniphier_ld11_usb_init(void) static void uniphier_ld11_usb_init(void)
...@@ -91,14 +99,27 @@ static int uniphier_ld20_usb_read(int lba, uintptr_t buf, size_t size) ...@@ -91,14 +99,27 @@ static int uniphier_ld20_usb_read(int lba, uintptr_t buf, size_t size)
return ret ? 0 : -1; return ret ? 0 : -1;
} }
static void uniphier_pxs3_usb_init(void)
{
struct uniphier_pxs3_op *op = (void *)UNIPHIER_PXS3_USB_DESC_BASE;
op->trans_op = (void *)(op + 1);
op->dev_desc = op->trans_op + 1;
}
static int uniphier_pxs3_usb_read(int lba, uintptr_t buf, size_t size) static int uniphier_pxs3_usb_read(int lba, uintptr_t buf, size_t size)
{ {
static int (*rom_usb_read)(unsigned int lba, unsigned int size, static int (*rom_usb_read)(uintptr_t desc, unsigned int lba,
uintptr_t buf); unsigned int size, uintptr_t buf);
int ret;
rom_usb_read = (__typeof(rom_usb_read))0x39e8;
rom_usb_read = (__typeof(rom_usb_read))0x100c; /* ROM-API - return 1 on success, 0 on error */
ret = rom_usb_read(UNIPHIER_PXS3_USB_DESC_BASE, lba, size, buf);
return rom_usb_read(lba, size, buf); return ret ? 0 : -1;
} }
struct uniphier_usb_rom_param { struct uniphier_usb_rom_param {
...@@ -116,6 +137,7 @@ static const struct uniphier_usb_rom_param uniphier_usb_rom_params[] = { ...@@ -116,6 +137,7 @@ static const struct uniphier_usb_rom_param uniphier_usb_rom_params[] = {
.read = uniphier_ld20_usb_read, .read = uniphier_ld20_usb_read,
}, },
[UNIPHIER_SOC_PXS3] = { [UNIPHIER_SOC_PXS3] = {
.init = uniphier_pxs3_usb_init,
.read = uniphier_pxs3_usb_read, .read = uniphier_pxs3_usb_read,
}, },
}; };
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment