diff options
author | Rui Miguel Silva <rui.silva@linaro.org> | 2021-05-13 09:47:13 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-05-21 20:05:32 +0200 |
commit | a74f639c5b5618e2c9f311c93bc3e7405de8ca85 (patch) | |
tree | 6f8408471c5f51487e802bdec68485b5729e6c78 /drivers/usb/isp1760/isp1760-core.c | |
parent | f9a88370e6751c68a8f0d1c3f23100ca20596249 (diff) | |
download | linux-a74f639c5b5618e2c9f311c93bc3e7405de8ca85.tar.gz linux-a74f639c5b5618e2c9f311c93bc3e7405de8ca85.tar.bz2 linux-a74f639c5b5618e2c9f311c93bc3e7405de8ca85.zip |
usb: isp1760: hcd: refactor mempool config and setup
In preparation to support other family member IP, which may have
different memory layout. Drop macros and setup a configuration
struct.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Link: https://lore.kernel.org/r/20210513084717.2487366-6-rui.silva@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/isp1760/isp1760-core.c')
-rw-r--r-- | drivers/usb/isp1760/isp1760-core.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/usb/isp1760/isp1760-core.c b/drivers/usb/isp1760/isp1760-core.c index c79ba98df9f9..35a7667e411c 100644 --- a/drivers/usb/isp1760/isp1760-core.c +++ b/drivers/usb/isp1760/isp1760-core.c @@ -101,6 +101,25 @@ void isp1760_set_pullup(struct isp1760_device *isp, bool enable) isp1760_field_set(udc->fields, HW_DP_PULLUP_CLEAR); } +/* + * 60kb divided in: + * - 32 blocks @ 256 bytes + * - 20 blocks @ 1024 bytes + * - 4 blocks @ 8192 bytes + */ +static const struct isp1760_memory_layout isp176x_memory_conf = { + .blocks[0] = 32, + .blocks_size[0] = 256, + .blocks[1] = 20, + .blocks_size[1] = 1024, + .blocks[2] = 4, + .blocks_size[2] = 8192, + + .ptd_num = 32, + .payload_blocks = 32 + 20 + 4, + .payload_area_size = 0xf000, +}; + static const struct regmap_range isp176x_hc_volatile_ranges[] = { regmap_reg_range(ISP176x_HC_USBCMD, ISP176x_HC_ATL_PTD_LASTPTD), regmap_reg_range(ISP176x_HC_BUFFER_STATUS, ISP176x_HC_MEMORY), @@ -302,6 +321,8 @@ int isp1760_register(struct resource *mem, int irq, unsigned long irqflags, udc->fields[i] = f; } + hcd->memory_layout = &isp176x_memory_conf; + isp1760_init_core(isp); if (IS_ENABLED(CONFIG_USB_ISP1760_HCD) && !usb_disabled()) { |