Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753770AbcDVLYL (ORCPT ); Fri, 22 Apr 2016 07:24:11 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:20015 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753264AbcDVLYF convert rfc822-to-8bit (ORCPT ); Fri, 22 Apr 2016 07:24:05 -0400 From: Amitkumar Karwar To: Marcel Holtmann CC: Linux Bluetooth , LKML , Ganapathi Bhat , Cathy Luo Subject: RE: [PATCH v7] Bluetooth: hci_uart: Support firmware download for Marvell Thread-Topic: [PATCH v7] Bluetooth: hci_uart: Support firmware download for Marvell Thread-Index: AQHRjxYDCrmEZxJGlEWIcvhh9vcEqJ+TY7sA//+eY0CAAvDnAA== Date: Fri, 22 Apr 2016 11:24:00 +0000 Message-ID: <2119fc93636742459899d50f2c1fcb8d@SC-EXCH04.marvell.com> References: <1459845266-2771-1-git-send-email-akarwar@marvell.com> <2A69CC2B-1FC2-4148-8564-38335A87CCD7@holtmann.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.4.102.210] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-04-22_08:,, signatures=0 X-Proofpoint-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1603290000 definitions=main-1604220160 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 856 Lines: 25 Hi Marcel, > > > > + > > > +static int mrvl_setup(struct hci_uart *hu) { > > > + struct mrvl_data *mrvl = hu->priv; > > > + > > > + mrvl_init_fw_data(hu); > > > + set_bit(HCI_UART_DNLD_FW, &mrvl->flags); > > > + > > > + return hci_uart_dnld_fw(hu); > > > +} > > > > So this is clearly the wrong spot. When ->setup is called it is > > expected that HCI is ready. You are misusing it here. > > > > Sure. We will move this to mrvl_open() where HCI is not yet initialized. We tried moving firmware download to mrvl_open(), but it's not feasible. "hu->proto" is not yet initialized at that time. So when the data/ack is received during firmware download, we can't have Marvell specific handling. Also, I can see other vendor's (broadcomm, Intel) have done firmware download in setup handler. I will send V8 patch shortly. Please check. Regards, Amitkumar