wwan m.2 xusb on Tegra K1 board (USBDEVFS_CONTROL failed)

We are developing on a tegra k1 board similar to the nvidia shieldtablet lte board and we are trying to setup a standard m.2 ngff wwan card in the m.2 interface but the board files for ardbeg are setup for icera gpio/power/usb when initializing m.2. How can we properly setup the m.2 baseband xusb port assignment for a standard m.2 wwan over usb lane?

Right now we constantly receive the following error with unediited board-ardbeg.c

We have tried both HSIC and UMTI lane_owner=0 and lane_owner=2

<6>[03-01 09:03:18.395] usb 1-1: Sierra USB modem converter now attached to ttyUSB0
<6>[03-01 09:03:18.395] sierra 1-1:1.2: Sierra USB modem converter detected
<6>[03-01 09:03:18.395] usb 1-1: APM supported, enabling autosuspend.
<7>[03-01 09:03:18.395] cpu-tegra: force EDP limit 1428000 kHz
<6>[03-01 09:03:18.395] usb 1-1: Sierra USB modem converter now attached to ttyUSB1
<6>[03-01 09:03:18.395] sierra 1-1:1.3: Sierra USB modem converter detected
<6>[03-01 09:03:18.395] usb 1-1: APM supported, enabling autosuspend.
<6>[03-01 09:03:18.395] usb 1-1: Sierra USB modem converter now attached to ttyUSB2
<6>[03-01 09:03:18.395] GobiNet 1-1:1.8 eth0: register 'GobiNet' at usb-tegra-ehci.2-1, GobiNet Ethernet Device, 1e:b1:bd:b3:29:a8
<4>[03-01 09:03:18.395] USB Speed : USB 2.0
<7>[03-01 09:03:18.395] usb 1-1: usbfs: USBDEVFS_CONTROL failed cmd UsbService host rqt 128 rq 6 len 256 ret -71
<7>[03-01 09:03:18.395] usb 1-1: usbfs: USBDEVFS_CONTROL failed cmd UsbService host rqt 128 rq 6 len 256 ret -71
<7>[03-01 09:03:18.395] usb 1-1: usbfs: USBDEVFS_CONTROL failed cmd UsbService host rqt 128 rq 6 len 256 ret -71

board-ardbeg.c baseband init:

/* GPIO usage for Bruce modem */
static struct gpio modem_gpios[] = {
	{MODEM_EN, GPIOF_OUT_INIT_HIGH, "MODEM EN"},
	{MDM_RST, GPIOF_OUT_INIT_HIGH, "MODEM RESET"},
	{MDM_SAR0, GPIOF_OUT_INIT_LOW, "MODEM SAR0"},
};

static struct tegra_usb_platform_data tegra_ehci2_hsic_baseband_pdata = {
	.port_otg = false,
	.has_hostpc = true,
	.unaligned_dma_buf_supported = false,
	.phy_intf = TEGRA_USB_PHY_INTF_HSIC,
	.op_mode = TEGRA_USB_OPMODE_HOST,
	.u_data.host = {
		.vbus_gpio = -1,
		.hot_plug = false,
		.remote_wakeup_supported = true,
		.power_off_on_suspend = true,
	},
};
static int baseband_init(void)
{
	int ret;

	ret = gpio_request_array(modem_gpios, ARRAY_SIZE(modem_gpios));
	if (ret) {
		pr_warn("%s:gpio request failed\n", __func__);
		return ret;
	}

	/* enable pull-down for MDM_COLD_BOOT */
	tegra_pinmux_set_pullupdown(TEGRA_PINGROUP_ULPI_DATA4,
				    TEGRA_PUPD_PULL_DOWN);

	/* Release modem reset to start boot */
	gpio_set_value(MDM_RST, 1);

	/* export GPIO for user space access through sysfs */
	gpio_export(MDM_RST, false);
	gpio_export(MDM_SAR0, false);

	return 0;
}

static const struct tegra_modem_operations baseband_operations = {
	.init = baseband_init,
};

static struct tegra_usb_modem_power_platform_data baseband_pdata = {
	.ops = &baseband_operations,
	.regulator_name = "vdd_wwan_mdm",
	.wake_gpio = -1,
	.boot_gpio = MDM_COLDBOOT,
	.boot_irq_flags = IRQF_TRIGGER_RISING |
				    IRQF_TRIGGER_FALLING |
				    IRQF_ONESHOT,
	.autosuspend_delay = 1000,
	.short_autosuspend_delay = 1000,
	.tegra_ehci_device = &tegra_ehci2_device,
	.tegra_ehci_pdata = &tegra_ehci2_hsic_baseband_pdata,
};

static struct platform_device icera_bruce_device = {
	.name = "tegra_usb_modem_power",
	.id = -1,
	.dev = {
		.platform_data = &baseband_pdata,
	},
};

static void ardbeg_modem_init(void)
{
	int modem_id = tegra_get_modem_id();
	pr_info("%s: modem_id = %d\n", __func__, modem_id);

	tegra_set_wake_source(42, INT_USB2);
	platform_device_register(&icera_bruce_device);
}

Hi,
Do you have different USB lane mapping on the custom TK1 board? We have guidance of USB lane mapping for TX1/TX2 release, but don’t have it for TK1. If your HW board is with deviation, please contact NVIDIA salesperson for further technical support.