static u32 redrat3_get_timeout(struct redrat3_dev *rr3) { u32 *tmp; u32 timeout = MS_TO_US(150); /* */ int len, ret, pipe; len = sizeof(*tmp); tmp = kzalloc(len, GFP_KERNEL); if (!tmp) { dev_warn(rr3->dev, "Memory allocation faillure\n"); return timeout; } pipe = usb_rcvctrlpipe(rr3->udev, 0); ret = usb_control_msg(rr3->udev, pipe, RR3_GET_IR_PARAM, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, RR3_IR_IO_SIG_TIMEOUT, 0, tmp, len, HZ * 5); if (ret != len) { dev_warn(rr3->dev, "Failed to read timeout from hardware\n"); return timeout; } timeout = redrat3_len_to_us(be32_to_cpu(*tmp)); rr3_dbg(rr3->dev, "Got timeout of %d ms\n", timeout / 1000); return timeout; }
static u32 redrat3_get_timeout(struct redrat3_dev *rr3) { __be32 *tmp; u32 timeout = MS_TO_US(150); /* a sane default, if things go haywire */ int len, ret, pipe; len = sizeof(*tmp); tmp = kzalloc(len, GFP_KERNEL); if (!tmp) return timeout; pipe = usb_rcvctrlpipe(rr3->udev, 0); ret = usb_control_msg(rr3->udev, pipe, RR3_GET_IR_PARAM, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, RR3_IR_IO_SIG_TIMEOUT, 0, tmp, len, HZ * 5); if (ret != len) dev_warn(rr3->dev, "Failed to read timeout from hardware\n"); else { timeout = redrat3_len_to_us(be32_to_cpup(tmp)); dev_dbg(rr3->dev, "Got timeout of %d ms\n", timeout / 1000); } kfree(tmp); return timeout; }