Hi Par, so on the top level: this is yet another H4 implementation plus channel-based packet routing, right? Could you please also elaborate More comments on the code are inlined. > +#define MAIN_DEV (uart_info->dev) What is that for? > + * cg2900_uart_suspend() - Called by Linux PM to put the device in a low power mode. > + * @pdev: Pointer to platform device. > + * @state: New state. > + * > + * In UART case, CG2900 driver does nothing on suspend. > + * > + * Returns: > + * 0 - Success. > + */ > +static int cg2900_uart_suspend(struct platform_device *pdev, pm_message_t state) > +{ > + struct uart_info *uart_info = dev_get_drvdata(&pdev->dev); > + > + if (uart_info->sleep_state == CHIP_POWERED_DOWN) > + return 0; > + > + if (uart_info->sleep_state != CHIP_ASLEEP) > + return -EBUSY; > + > + dev_dbg(MAIN_DEV, "New sleep_state: CHIP_SUSPENDED\n"); > + uart_info->sleep_state = CHIP_SUSPENDED; > + return 0; > +} I don't think this is safe wrt work queue. What if it gets scheduled when drivers are suspended? Thanks, Vitaly -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html