| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Remote VUB300 SDIO/SDmem Host Controller Driver |
|---|
| 3 | 4 | * |
|---|
| .. | .. |
|---|
| 6 | 7 | * based on USB Skeleton driver - 2.2 |
|---|
| 7 | 8 | * |
|---|
| 8 | 9 | * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) |
|---|
| 9 | | - * |
|---|
| 10 | | - * This program is free software; you can redistribute it and/or |
|---|
| 11 | | - * modify it under the terms of the GNU General Public License as |
|---|
| 12 | | - * published by the Free Software Foundation, version 2 |
|---|
| 13 | 10 | * |
|---|
| 14 | 11 | * VUB300: is a USB 2.0 client device with a single SDIO/SDmem/MMC slot |
|---|
| 15 | 12 | * Any SDIO/SDmem/MMC device plugged into the VUB300 will appear, |
|---|
| .. | .. |
|---|
| 98 | 95 | u8 port_number; |
|---|
| 99 | 96 | u8 command_type; |
|---|
| 100 | 97 | u8 command_index; |
|---|
| 101 | | - u8 command_response[0]; |
|---|
| 98 | + u8 command_response[]; |
|---|
| 102 | 99 | } __packed; |
|---|
| 103 | 100 | |
|---|
| 104 | 101 | struct sd_status_header { |
|---|
| .. | .. |
|---|
| 1366 | 1363 | int retval; |
|---|
| 1367 | 1364 | for (n = 0; n < sdio_funcs; n++) { |
|---|
| 1368 | 1365 | struct sdio_func *sf = card->sdio_func[n]; |
|---|
| 1369 | | - l += snprintf(vub300->vub_name + l, |
|---|
| 1366 | + l += scnprintf(vub300->vub_name + l, |
|---|
| 1370 | 1367 | sizeof(vub300->vub_name) - l, "_%04X%04X", |
|---|
| 1371 | 1368 | sf->vendor, sf->device); |
|---|
| 1372 | 1369 | } |
|---|
| .. | .. |
|---|
| 2073 | 2070 | kref_put(&vub300->kref, vub300_delete); |
|---|
| 2074 | 2071 | } |
|---|
| 2075 | 2072 | |
|---|
| 2076 | | -static void vub300_init_card(struct mmc_host *mmc, struct mmc_card *card) |
|---|
| 2077 | | -{ /* NOT irq */ |
|---|
| 2078 | | - struct vub300_mmc_host *vub300 = mmc_priv(mmc); |
|---|
| 2079 | | - dev_info(&vub300->udev->dev, "NO host QUIRKS for this card\n"); |
|---|
| 2080 | | -} |
|---|
| 2081 | | - |
|---|
| 2082 | 2073 | static const struct mmc_host_ops vub300_mmc_ops = { |
|---|
| 2083 | 2074 | .request = vub300_mmc_request, |
|---|
| 2084 | 2075 | .set_ios = vub300_mmc_set_ios, |
|---|
| 2085 | 2076 | .get_ro = vub300_mmc_get_ro, |
|---|
| 2086 | 2077 | .enable_sdio_irq = vub300_enable_sdio_irq, |
|---|
| 2087 | | - .init_card = vub300_init_card, |
|---|
| 2088 | 2078 | }; |
|---|
| 2089 | 2079 | |
|---|
| 2090 | 2080 | static int vub300_probe(struct usb_interface *interface, |
|---|