diff mbox series

[v2,2/2] dt-bindings: net: bluetooth: Add device property nvm-postfix for QCA6174

Message ID 1554368908-22017-2-git-send-email-rjliao@codeaurora.org (mailing list archive)
State Not Applicable, archived
Headers show
Series Bluetooth: hci_qca: Load customized NVM based on the device property | expand

Commit Message

Rocky Liao April 4, 2019, 9:08 a.m. UTC
This patchs patch adds an optional device property nvm-postfix to allow the
driver to load customized nvm file based on this property

Signed-off-by: Rocky Liao <rjliao@codeaurora.org>
---
Changes in v2:
  * added the property to the document file
    Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
  * fixed coding style warnings
  * moved the nvm-postfix to the last entry of the qca_serdev
---
 Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 2 ++
 1 file changed, 2 insertions(+)

Comments

Marc Gonzalez April 4, 2019, 12:32 p.m. UTC | #1
+robh

On 04/04/2019 11:08, Rocky Liao wrote:

> This patchs patch adds an optional device property nvm-postfix to allow the
> driver to load customized nvm file based on this property

While text /before/ is indeed called a "prefix", text /after/ is not a "postfix",
but a "suffix".


>  Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> index 824c0e2..70cda4b 100644
> --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> @@ -16,6 +16,7 @@ Optional properties for compatible string qcom,qca6174-bt:
>  
>   - enable-gpios: gpio specifier used to enable chip
>   - clocks: clock provided to the controller (SUSCLK_32KHZ)
> + - nvm-postfix: nvm file postfix to load customized nvm file

The device tree is supposed to describe hardware.

The name of which file to load can hardly be considered part of the HW.

Possible solutions:
1) derive the file name from the compatible string
2) pass the name as a module parameter
3) something else


> @@ -39,6 +40,7 @@ serial@7570000 {
>  
>  		enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
>  		clocks = <&divclk4>;
> +		nvm-postfix = "i2s";
>  	};
>  };

If one provides the entire suffix, including the underscore, then you can
simplify the code:

	snprintf(config.fwname, sizeof(config.fwname), "qca/nvm_%08x%s.bin", soc_ver, suffix ? suffix : "");

Regards.
Rocky Liao April 9, 2019, 10:15 a.m. UTC | #2
On 2019-04-04 20:32, Marc Gonzalez wrote:
> +robh
> 
> On 04/04/2019 11:08, Rocky Liao wrote:
> 
>> This patchs patch adds an optional device property nvm-postfix to 
>> allow the
>> driver to load customized nvm file based on this property
> 
> While text /before/ is indeed called a "prefix", text /after/ is not a
> "postfix",
> but a "suffix".
> 
> 
>>  Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 2 ++
>>  1 file changed, 2 insertions(+)
>> 
>> diff --git 
>> a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt 
>> b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> index 824c0e2..70cda4b 100644
>> --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> @@ -16,6 +16,7 @@ Optional properties for compatible string 
>> qcom,qca6174-bt:
>> 
>>   - enable-gpios: gpio specifier used to enable chip
>>   - clocks: clock provided to the controller (SUSCLK_32KHZ)
>> + - nvm-postfix: nvm file postfix to load customized nvm file
> 
> The device tree is supposed to describe hardware.
> 
> The name of which file to load can hardly be considered part of the HW.
> 
> Possible solutions:
> 1) derive the file name from the compatible string
> 2) pass the name as a module parameter
> 3) something else
> 
> 
>> @@ -39,6 +40,7 @@ serial@7570000 {
>> 
>>  		enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
>>  		clocks = <&divclk4>;
>> +		nvm-postfix = "i2s";
>>  	};
>>  };
> 
> If one provides the entire suffix, including the underscore, then you 
> can
> simplify the code:
> 
> 	snprintf(config.fwname, sizeof(config.fwname), "qca/nvm_%08x%s.bin",
> soc_ver, suffix ? suffix : "");
> 
> Regards
.
Hi Marc,

The major purpose for that property is about the BT audio bus type, can 
it be considered as part of the HW? If yes maybe we can use a property 
name "audio-bus" to reflect that.

If not then I will adopt the solution 1 to add a new compatible string 
"{ .compatible = "qcom,qca6174-bt-i2s" }" and load specific nvm for this 
compatible string, please feel free to let me know if any other 
concerns.
Rob Herring April 9, 2019, 1:54 p.m. UTC | #3
On Thu, Apr 4, 2019 at 7:32 AM Marc Gonzalez <marc.w.gonzalez@free.fr> wrote:
>
> +robh
>
> On 04/04/2019 11:08, Rocky Liao wrote:
>
> > This patchs patch adds an optional device property nvm-postfix to allow the
> > driver to load customized nvm file based on this property
>
> While text /before/ is indeed called a "prefix", text /after/ is not a "postfix",
> but a "suffix".
>
>
> >  Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> > index 824c0e2..70cda4b 100644
> > --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> > +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> > @@ -16,6 +16,7 @@ Optional properties for compatible string qcom,qca6174-bt:
> >
> >   - enable-gpios: gpio specifier used to enable chip
> >   - clocks: clock provided to the controller (SUSCLK_32KHZ)
> > + - nvm-postfix: nvm file postfix to load customized nvm file
>
> The device tree is supposed to describe hardware.
>
> The name of which file to load can hardly be considered part of the HW.
>
> Possible solutions:
> 1) derive the file name from the compatible string
> 2) pass the name as a module parameter
> 3) something else

Or use the 'firmware-name' property to define the full firmware filename.

Rob
Rob Herring April 9, 2019, 2:03 p.m. UTC | #4
On Tue, Apr 9, 2019 at 5:15 AM Rocky Liao <rjliao@codeaurora.org> wrote:
>
> On 2019-04-04 20:32, Marc Gonzalez wrote:
> > +robh
> >
> > On 04/04/2019 11:08, Rocky Liao wrote:
> >
> >> This patchs patch adds an optional device property nvm-postfix to
> >> allow the
> >> driver to load customized nvm file based on this property
> >
> > While text /before/ is indeed called a "prefix", text /after/ is not a
> > "postfix",
> > but a "suffix".
> >
> >
> >>  Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >> diff --git
> >> a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> >> b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> >> index 824c0e2..70cda4b 100644
> >> --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> >> +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
> >> @@ -16,6 +16,7 @@ Optional properties for compatible string
> >> qcom,qca6174-bt:
> >>
> >>   - enable-gpios: gpio specifier used to enable chip
> >>   - clocks: clock provided to the controller (SUSCLK_32KHZ)
> >> + - nvm-postfix: nvm file postfix to load customized nvm file
> >
> > The device tree is supposed to describe hardware.
> >
> > The name of which file to load can hardly be considered part of the HW.
> >
> > Possible solutions:
> > 1) derive the file name from the compatible string
> > 2) pass the name as a module parameter
> > 3) something else
> >
> >
> >> @@ -39,6 +40,7 @@ serial@7570000 {
> >>
> >>              enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
> >>              clocks = <&divclk4>;
> >> +            nvm-postfix = "i2s";
> >>      };
> >>  };
> >
> > If one provides the entire suffix, including the underscore, then you
> > can
> > simplify the code:
> >
> >       snprintf(config.fwname, sizeof(config.fwname), "qca/nvm_%08x%s.bin",
> > soc_ver, suffix ? suffix : "");
> >
> > Regards
> .
> Hi Marc,
>
> The major purpose for that property is about the BT audio bus type, can
> it be considered as part of the HW? If yes maybe we can use a property
> name "audio-bus" to reflect that.
>
> If not then I will adopt the solution 1 to add a new compatible string
> "{ .compatible = "qcom,qca6174-bt-i2s" }" and load specific nvm for this
> compatible string, please feel free to let me know if any other
> concerns.

I don't think the suggestion was to add the nvm string to the
compatible, but rather compatible strings serve as a map key. Having
board specific firmware files for wifi/bt is pretty common, but
parameters for 'i2s' is a bit strange. So a better explanation of what
parameters this contains would help. How/when does it vary, for
example?

Also, if it is only a handful of parameters, making them DT properties
is preferred.

Rob
Rocky Liao April 9, 2019, 2:48 p.m. UTC | #5
On 2019-04-09 22:03, Rob Herring wrote:
> On Tue, Apr 9, 2019 at 5:15 AM Rocky Liao <rjliao@codeaurora.org> 
> wrote:
>> 
>> On 2019-04-04 20:32, Marc Gonzalez wrote:
>> > +robh
>> >
>> > On 04/04/2019 11:08, Rocky Liao wrote:
>> >
>> >> This patchs patch adds an optional device property nvm-postfix to
>> >> allow the
>> >> driver to load customized nvm file based on this property
>> >
>> > While text /before/ is indeed called a "prefix", text /after/ is not a
>> > "postfix",
>> > but a "suffix".
>> >
>> >
>> >>  Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 2 ++
>> >>  1 file changed, 2 insertions(+)
>> >>
>> >> diff --git
>> >> a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> >> b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> >> index 824c0e2..70cda4b 100644
>> >> --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> >> +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
>> >> @@ -16,6 +16,7 @@ Optional properties for compatible string
>> >> qcom,qca6174-bt:
>> >>
>> >>   - enable-gpios: gpio specifier used to enable chip
>> >>   - clocks: clock provided to the controller (SUSCLK_32KHZ)
>> >> + - nvm-postfix: nvm file postfix to load customized nvm file
>> >
>> > The device tree is supposed to describe hardware.
>> >
>> > The name of which file to load can hardly be considered part of the HW.
>> >
>> > Possible solutions:
>> > 1) derive the file name from the compatible string
>> > 2) pass the name as a module parameter
>> > 3) something else
>> >
>> >
>> >> @@ -39,6 +40,7 @@ serial@7570000 {
>> >>
>> >>              enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
>> >>              clocks = <&divclk4>;
>> >> +            nvm-postfix = "i2s";
>> >>      };
>> >>  };
>> >
>> > If one provides the entire suffix, including the underscore, then you
>> > can
>> > simplify the code:
>> >
>> >       snprintf(config.fwname, sizeof(config.fwname), "qca/nvm_%08x%s.bin",
>> > soc_ver, suffix ? suffix : "");
>> >
>> > Regards
>> .
>> Hi Marc,
>> 
>> The major purpose for that property is about the BT audio bus type, 
>> can
>> it be considered as part of the HW? If yes maybe we can use a property
>> name "audio-bus" to reflect that.
>> 
>> If not then I will adopt the solution 1 to add a new compatible string
>> "{ .compatible = "qcom,qca6174-bt-i2s" }" and load specific nvm for 
>> this
>> compatible string, please feel free to let me know if any other
>> concerns.
> 
> I don't think the suggestion was to add the nvm string to the
> compatible, but rather compatible strings serve as a map key. Having
> board specific firmware files for wifi/bt is pretty common, but
> parameters for 'i2s' is a bit strange. So a better explanation of what
> parameters this contains would help. How/when does it vary, for
> example?
> 
> Also, if it is only a handful of parameters, making them DT properties
> is preferred.
> 
> Rob

Ok, I prefer to go with adding a device property "firmware-name" with 
full firmware name as you suggested in previous comment.
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora 
Forum,
a Linux Foundation Collaborative Project
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
index 824c0e2..70cda4b 100644
--- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
+++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt
@@ -16,6 +16,7 @@  Optional properties for compatible string qcom,qca6174-bt:
 
  - enable-gpios: gpio specifier used to enable chip
  - clocks: clock provided to the controller (SUSCLK_32KHZ)
+ - nvm-postfix: nvm file postfix to load customized nvm file
 
 Required properties for compatible string qcom,wcn3990-bt:
 
@@ -39,6 +40,7 @@  serial@7570000 {
 
 		enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
 		clocks = <&divclk4>;
+		nvm-postfix = "i2s";
 	};
 };