scsi: ufs: set the device reference clock setting
Subsystems (3)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH v2 1/3 scsi: ufs: set the device reference clock setting
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz, 26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.
--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52 ++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +7 -0
@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction - either 1 or 2. Note that it is assume same number of lanes is used both directions at once. If not specified, default is 2 lanes per direction. +- dev-ref-clk-freq : Specify the device reference clock frequency, must be one of the following: + 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified. Note: If above properties are not defined it can be assumed that the supply regulators or clocks are always on.
@@ -66,4 +72,5 @@ Example: freq-table-hz = <100000000 200000000>, <0 0>, <0 0>; phys = <&ufsphy1>; phy-names = "ufsphy"; + dev-ref-clk-freq = <0>; /* reference clock freq: 19.2 MHz */ };
drivers/scsi/ufs/ufs.h +9 -0
@@ -378,6 +378,15 @@ enum query_opcode { UPIU_QUERY_OPCODE_TOGGLE_FLAG = 0x8, }; +/* bRefClkFreq attribute values */ +enum ref_clk_freq { +REF_CLK_FREQ_19_2_MHZ =0x0 , +REF_CLK_FREQ_26_MHZ =0x1 , +REF_CLK_FREQ_38_4_MHZ =0x2 , +REF_CLK_FREQ_52_MHZ =0x3 , +REF_CLK_FREQ_MAX =REF_CLK_FREQ_52_MHZ , +}; +/* Query response result code */ enum {QUERY_RESULT_SUCCESS =0x00 ,
drivers/scsi/ufs/ufshcd-pltfrm.c +24 -0
@@ -221,6 +221,28 @@ static int ufshcd_parse_regulator_info(struct ufs_hba *hba)return err; } +static void ufshcd_parse_dev_ref_clk_freq (struct ufs_hba *hba) +{ +struct device *dev = hba->dev; +struct device_node *np = dev->of_node; +int ret; + +if (!np) +return ; + + ret =of_property_read_u32 (np,"dev-ref-clk-freq" , + &hba->dev_ref_clk_freq); +if (ret || + (hba->dev_ref_clk_freq <0 ) || + (hba->dev_ref_clk_freq >REF_CLK_FREQ_52_MHZ )) { +dev_err (hba->dev, +"%s: invalid ref_clk setting = %d, set to default\n" , + __func__, hba->dev_ref_clk_freq); +/* default setting */ + hba->dev_ref_clk_freq =REF_CLK_FREQ_26_MHZ ; + } +} +#ifdef CONFIG_PM /** * ufshcd_pltfrm_suspend - suspend power management function
@@ -343,6 +365,8 @@ int ufshcd_pltfrm_init(struct platform_device *pdev,pm_runtime_set_active (&pdev->dev);pm_runtime_enable (&pdev->dev); +ufshcd_parse_dev_ref_clk_freq (hba); +ufshcd_init_lanes_per_dir (hba); err =ufshcd_init (hba, mmio_base, irq);
drivers/scsi/ufs/ufshcd.c +52 -0
64 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.h +1 -0
@@ -548,6 +548,7 @@ struct ufs_hba {void *priv;unsigned int irq;bool is_irq_enabled; +u32 dev_ref_clk_freq;/* Interrupt aggregation support is broken */ #define UFSHCD_QUIRK_BROKEN_INTR_AGGR 0x1
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
Quoted 71 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz, 26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52 ++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +7
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction - either 1 or 2. Note that it is assume same number of lanes is used both directions at once. If not specified, default is 2 lanes per direction. +- dev-ref-clk-freq : Specify the device reference clock frequency, must be one of the following: + 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified. Note: If above properties are not defined it can be assumed that the supply regulators or clocks are always on.@@ -66,4 +72,5 @@ Example: freq-table-hz = <100000000 200000000>, <0 0>, <0 0>; phys = <&ufsphy1>; phy-names = "ufsphy"; + dev-ref-clk-freq = <0>; /* reference clock freq: 19.2 MHz */ };drivers/scsi/ufs/ufs.h +9
-0@@ -378,6 +378,15 @@ enum query_opcode { UPIU_QUERY_OPCODE_TOGGLE_FLAG = 0x8, }; +/* bRefClkFreq attribute values */ +enum ref_clk_freq { +REF_CLK_FREQ_19_2_MHZ =0x0 , +REF_CLK_FREQ_26_MHZ =0x1 , +REF_CLK_FREQ_38_4_MHZ =0x2 , +REF_CLK_FREQ_52_MHZ =0x3 , +REF_CLK_FREQ_MAX =REF_CLK_FREQ_52_MHZ , +}; +/* Query response result code */ enum {QUERY_RESULT_SUCCESS =0x00 ,drivers/scsi/ufs/ufshcd-pltfrm.c +1
-0@@ -221,6 +221,28 @@ static int ufshcd_parse_regulator_info(struct ufs_hba *hba)return err; } +static void ufshcd_parse_dev_ref_clk_freq (struct ufs_hba *hba)
drivers/scsi/ufs/ufshcd-pltfrm.c static int ufshcd_parse_regulator_info(struct ufs_hba *hba) · line 234
Quoted 10 lines
drivers/scsi/ufs/ufshcd-pltfrm.c +10
-0+{ +struct device *dev = hba->dev; +struct device_node *np = dev->of_node; +int ret; + +if (!np) +return ; + + ret =of_property_read_u32 (np,"dev-ref-clk-freq" , + &hba->dev_ref_clk_freq);
This setting is useful for any UFSHC driver. Please move it to ufshcd.c and use device_property_read_u32().
drivers/scsi/ufs/ufshcd-pltfrm.c static int ufshcd_parse_regulator_info(struct ufs_hba *hba) · line 236
Quoted 2 lines
drivers/scsi/ufs/ufshcd-pltfrm.c +2
-0+ if (ret || + (hba->dev_ref_clk_freq < 0) ||
u32 cannot be < 0
drivers/scsi/ufs/ufshcd-pltfrm.c static int ufshcd_parse_regulator_info(struct ufs_hba *hba) · line 242
Quoted 6 lines
drivers/scsi/ufs/ufshcd-pltfrm.c +6
-0+ (hba->dev_ref_clk_freq > REF_CLK_FREQ_52_MHZ)) { +dev_err (hba->dev, +"%s: invalid ref_clk setting = %d, set to default\n" , + __func__, hba->dev_ref_clk_freq); +/* default setting */ + hba->dev_ref_clk_freq =REF_CLK_FREQ_26_MHZ ;
No, the default is to leave the value unchanged.
Quoted 98 lines
drivers/scsi/ufs/ufshcd-pltfrm.c +5
-0+ } +} +#ifdef CONFIG_PM /** * ufshcd_pltfrm_suspend - suspend power management function @@ -343,6 +365,8 @@ int ufshcd_pltfrm_init(struct platform_device *pdev,pm_runtime_set_active (&pdev->dev);pm_runtime_enable (&pdev->dev); +ufshcd_parse_dev_ref_clk_freq (hba); +ufshcd_init_lanes_per_dir (hba); err =ufshcd_init (hba, mmio_base, irq);drivers/scsi/ufs/ufshcd.c +52
-0@@ -6297,6 +6297,53 @@ static void ufshcd_def_desc_sizes(struct ufs_hba *hba) }/** +* ufshcd_set_dev_ref_clk - set the device bRefClkFreq +* @hba: per-adapter instance +* +* Read the current value of the bRefClkFreq attribute from device and update it +* if host is supplying different reference clock frequency than one mentioned +* in bRefClkFreq attribute. +* +* Returns zero on success, non-zero error value on failure. +*/ +static int ufshcd_set_dev_ref_clk (struct ufs_hba *hba) +{ +int err =0 ; +int ref_clk =-1 ; +static const char *const ref_clk_freqs[] = {"19.2 MHz" ,"26 MHz" , +"38.4 MHz" ,"52 MHz" }; + + err =ufshcd_query_attr_retry (hba,UPIU_QUERY_OPCODE_READ_ATTR , +QUERY_ATTR_IDN_REF_CLK_FREQ ,0 ,0 , &ref_clk); + +if (err) { +dev_err (hba->dev,"%s: failed reading bRefClkFreq. err = %d\n" , + __func__, err); + goto out; + } + +if (ref_clk == hba->dev_ref_clk_freq) + goto out;/* nothing to update */ + + err =ufshcd_query_attr_retry (hba,UPIU_QUERY_OPCODE_WRITE_ATTR , +QUERY_ATTR_IDN_REF_CLK_FREQ ,0 ,0 , + &hba->dev_ref_clk_freq); + +if (err) +dev_err (hba->dev,"%s: bRefClkFreq setting to %s failed\n" , + __func__, ref_clk_freqs[hba->dev_ref_clk_freq]); +/* +* It is good to print this out here to debug any later failures +* related to gear switch. +*/ +dev_dbg (hba->dev,"%s: bRefClkFreq setting to %s succeeded\n" , + __func__, ref_clk_freqs[hba->dev_ref_clk_freq]); + +out: +return err; +} + +/** * ufshcd_probe_hba - probe hba to detect device and initialize * @hba: per-adapter instance * @@ -6361,6 +6408,11 @@ static int ufshcd_probe_hba(struct ufs_hba *hba)"%s: Failed getting max supported power mode\n" , __func__); }else { +/* +* Set the right value to bRefClkFreq before attempting to +* switch to HS gears. +*/ +ufshcd_set_dev_ref_clk (hba); ret =ufshcd_config_pwr_mode (hba, &hba->max_pwr_info.info);if (ret) { dev_err(hba->dev, "%s: Failed setting power mode, err = %d\n",drivers/scsi/ufs/ufshcd.h +1
-0@@ -548,6 +548,7 @@ struct ufs_hba {void *priv;unsigned int irq;bool is_irq_enabled; +u32 dev_ref_clk_freq;/* Interrupt aggregation support is broken */ #define UFSHCD_QUIRK_BROKEN_INTR_AGGR 0x1
Rob Herring
maintainerQuoted 24 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz, 26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52 ++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 49
Quoted 9 lines
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +6
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction - either 1 or 2. Note that it is assume same number of lanes is used both directions at once. If not specified, default is 2 lanes per direction. +- dev-ref-clk-freq : Specify the device reference clock frequency, must be one of the following: + 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified.
I must have misunderstood your last response. I thought you could handle things without DT. If not, my question remains.
Rob
Comment inline.
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Wednesday, June 13, 2018 12:57 AM
To: Sayali Lokhande <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock setting
Quoted 9 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz,
26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.
Quoted 8 lines
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52
++++++++++++++++++++++
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 41
Quoted 10 lines
drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction - either 1
or 2.
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 42
Quoted 1 line
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0Note that it is assume same number of lanes is
used both
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 43
Quoted 1 line
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0directions at once. If not specified, default is 2
lanes per direction.
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 44
Quoted 1 line
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +1
-0+- dev-ref-clk-freq : Specify the device reference clock frequency, must
be one of the following:
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 49
Quoted 5 lines
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +5
-0+ 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified.
I must have misunderstood your last response. I thought you could handle things without DT. If not, my question remains.
[Sayali]: Ref clk frequency setting could vary from platfrom-to-platform(vendor specific). Hence we need to pass it via DT.
Currently in DT we do not set/mention any ref clk frequency
parameter. Hence I have added one new DT entry to configure
required ref clk freq.
Rob
Quoted 1 line · sayali
Comment inline.
Hello Sayali,
Please don't use inline replies. That makes it very hard to follow the conversation. BTW, in the headers of your e-mail I found the following:
"X-Mailer: Microsoft Outlook 16.0". Please use another e-mail client that is better suited for collaboration on open source mailing lists. If outgoing e-mails have to pass through an Exchange server, the following e-mail clients support Exchange servers and are better suited for open source collaboration:
* Evolution (Linux only).
* Thunderbird + ExQuilla plugin.
* If IMAP has been enabled on the Exchange server that you are using then that means that you can choose from the many open source e-mail clients that support IMAP.
Thanks,
Bart.
Actually, it makes it easier to follow the conversation.
Quoted 7 lines · Bart Van Assche
Quoted 1 line · sayali
Comment inline.
Hello Sayali,
Please don't use inline replies. That makes it very hard to follow the conversation.
Actually, it makes it easier to follow the conversation.
Quoted 3 lines
* If IMAP has been enabled on the Exchange server that you are using then that means that you can choose from the many open source e-mail clients that support IMAP.
Which of the two is easier to follow?
Quoted 1 line · On Fri, 2018-06-15 at 16:37 -0400, [email protected] wrote:
Actually, it makes it easier to follow the conversation.
In case I wasn't clear enough: I was referring to replying inline *without* quoting the original message. That makes a conversation *really* hard to follow.
Bart.
Quoted 3 lines · Bart Van Assche
In case I wasn't clear enough: I was referring to replying inline *without* quoting the original message. That makes a conversation *really* hard to follow.
So if there's no quoted message, what is the inline reply inlined into? :)
Quoted 6 lines · On Fri, 2018-06-15 at 16:53 -0400, [email protected] wrote:
Quoted 3 lines · Bart Van Assche
In case I wasn't clear enough: I was referring to replying inline *without* quoting the original message. That makes a conversation *really* hard to follow.
So if there's no quoted message, what is the inline reply inlined into? :)
I was referring to quoting without indenting the quote with "> ". That should already have been clear if you had a look at the message I complained about.
Bart.
Rob Herring
maintainerQuoted 60 lines · sayali
Comment inline.
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Wednesday, June 13, 2018 12:57 AM
To: Sayali Lokhande <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock settingQuoted 9 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz,
26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.Quoted 8 lines
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52++++++++++++++++++++++
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 41
Quoted 10 lines
drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction - either 1or 2.
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 42
Quoted 1 line
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0Note that it is assume same number of lanes isused both
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 43
Quoted 1 line
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0directions at once. If not specified, default is 2lanes per direction.
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 44
Quoted 1 line
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +1
-0+- dev-ref-clk-freq : Specify the device reference clock frequency, mustbe one of the following:
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 49
Quoted 5 lines
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +5
-0+ 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified.
Quoted 7 lines
I must have misunderstood your last response. I thought you could handle things without DT. If not, my question remains.
[Sayali]: Ref clk frequency setting could vary from platfrom-to-platform(vendor specific). Hence we need to pass it via DT.
Currently in DT we do not set/mention any ref clk frequency
parameter. Hence I have added one new DT entry to configure
required ref clk freq.
The clocks property contains "ref_clk". Is that not the same clock? Why can't you read what that frequency is? Or you need to be able to change it to a specific frequency? These all look like typical oscillator frequencies, so I wouldn't expect you could change them (other than divide by 2 maybe).
Rob
Hi Rob,
Please check my comment inline.
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Thursday, June 14, 2018 7:59 PM
To: sayali <[email protected]>
Cc: Subhash Jadavani <[email protected]>; Can Guo <[email protected]>; Vivek Gautam <[email protected]>; Rajendra Nayak <[email protected]>; Vinayak Holikatti <[email protected]>; James E.J. Bottomley <[email protected]>; Martin K. Petersen <[email protected]>; [email protected]; Evan Green <[email protected]>; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock setting
Quoted 64 lines · sayali
Comment inline.
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Wednesday, June 13, 2018 12:57 AM
To: Sayali Lokhande <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock settingQuoted 9 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz,
26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.Quoted 8 lines
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52++++++++++++++++++++++
Quoted 11 lines
drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction -either 1
or 2.
Quoted 2 lines
Note that it is assume same number of lanes
isused both
Quoted 2 lines
directions at once. If not specified, default
is 2lanes per direction.
Quoted 1 line
+- dev-ref-clk-freq : Specify the device reference clock frequency, must
be one of the following:
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 49
Quoted 5 lines
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +5
-0+ 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified.
Quoted 7 lines
I must have misunderstood your last response. I thought you could handle things without DT. If not, my question remains. [Sayali]: Ref clk frequency setting could vary from platfrom-to-platform(vendor specific). Hence we need to pass it via DT.
Currently in DT we do not set/mention any ref clk frequency
parameter. Hence I have added one new DT entry to configure
required ref clk freq.
The clocks property contains "ref_clk". Is that not the same clock?
Why can't you read what that frequency is? Or you need to be able to change it to a specific frequency? These all look like typical oscillator frequencies, so I wouldn't expect you could change them (other than divide by 2 maybe). [Sayali] : It is the same "ref_clk", but we need to be able to change it to a specific frequency as per requirement. Thus, we need new DT entry to specify/override reference clock frequency as per need.
Rob
Rob Herring
maintainerQuoted 4 lines · sayali
Hi Rob,
Please check my comment inline.
As mentioned in the back and forth comments previously in this thread, please fix your email client (hint: you can't use Outlook) and properly quote your replies (i.e. the leading ">")
Quoted 82 lines
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Thursday, June 14, 2018 7:59 PM
To: sayali <[email protected]>
Cc: Subhash Jadavani <[email protected]>; Can Guo <[email protected]>; Vivek Gautam <[email protected]>; Rajendra Nayak <[email protected]>; Vinayak Holikatti <[email protected]>; James E.J. Bottomley <[email protected]>; Martin K. Petersen <[email protected]>; [email protected]; Evan Green <[email protected]>; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock settingQuoted 64 lines · sayali
Comment inline.
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Wednesday, June 13, 2018 12:57 AM
To: Sayali Lokhande <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock settingQuoted 9 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz,
26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.Quoted 8 lines
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52++++++++++++++++++++++
Quoted 11 lines
drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction -either 1
or 2.
Quoted 2 lines
Note that it is assume same number of lanes
isused both
Quoted 2 lines
directions at once. If not specified, default
is 2lanes per direction.
Quoted 1 line
+- dev-ref-clk-freq : Specify the device reference clock frequency, must
be one of the following:
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 49
Quoted 5 lines
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +5
-0+ 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified.Quoted 7 lines
I must have misunderstood your last response. I thought you could handle things without DT. If not, my question remains. [Sayali]: Ref clk frequency setting could vary from platfrom-to-platform(vendor specific). Hence we need to pass it via DT.
Currently in DT we do not set/mention any ref clk frequency
parameter. Hence I have added one new DT entry to configure
required ref clk freq.
Quoted 3 lines
The clocks property contains "
ref_clk". Is that not the same clock?
Why can't you read what that frequency is? Or you need to be able to change it to a specific frequency? These all look like typical oscillator frequencies, so I wouldn't expect you could change them (other than divide by 2 maybe). [Sayali] : It is the same "ref_clk", but we need to be able to change it to a specific frequency as per requirement. Thus, we need new DT entry to specify/override reference clock frequency as per need.
That is not what your patch does. It just tells the device what the frequency is. If you need to get the rate, use "clk_get_rate" on "ref_clk". If you need to actually set it to a specific frequency, then we have properties for that already (assigned-clock-rates).
Seems to me that by the time you get to Linux, the bootloader would have already set this. Otherwise, how do you boot? Seems like you would want to read the attr and ensure "ref_clk" freq matches.
Rob
Quoted 7 lines · Rob Herring
Quoted 3 lines · sayali
Hi Rob,
Please check my comment inline.
As mentioned in the back and forth comments previously in this thread, please fix your email client (hint: you can't use Outlook) and properly quote your replies (i.e. the leading ">")
I have started using Thunderbird now. Hope you can see my replies correctly this time.
Quoted 81 lines
Quoted 81 lines
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Thursday, June 14, 2018 7:59 PM
To: sayali <[email protected]>
Cc: Subhash Jadavani <[email protected]>; Can Guo <[email protected]>; Vivek Gautam <[email protected]>; Rajendra Nayak <[email protected]>; Vinayak Holikatti <[email protected]>; James E.J. Bottomley <[email protected]>; Martin K. Petersen <[email protected]>; [email protected]; Evan Green <[email protected]>; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock settingQuoted 70 lines · sayali
Comment inline.
Thanks,
Sayali
-----Original Message-----
From: Rob Herring [mailto:[email protected]]
Sent: Wednesday, June 13, 2018 12:57 AM
To: Sayali Lokhande <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Mark Rutland <[email protected]>; Mathieu Malaterre <[email protected]>; open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 1/3] scsi: ufs: set the device reference clock settingQuoted 9 lines · Sayali Lokhande
From: Subhash Jadavani <[email protected]>
UFS host supplies the reference clock to UFS device and UFS device specification allows host to provide one of the 4 frequencies (19.2 MHz,
26 MHz, 38.4 MHz, 52 MHz) for reference clock. Host should set the device reference clock frequency setting in the device based on what frequency it is supplying to UFS device.Quoted 8 lines
Signed-off-by Subhash Jadavani <[email protected]>Signed-off-by Can Guo <[email protected]>Signed-off-by Sayali Lokhande <[email protected]>--- .../devicetree/bindings/ufs/ufshcd-pltfrm.txt | 7 +++ drivers/scsi/ufs/ufs.h | 9 ++++ drivers/scsi/ufs/ufshcd-pltfrm.c | 24 ++++++++++ drivers/scsi/ufs/ufshcd.c | 52++++++++++++++++++++++
Quoted 11 lines
drivers/scsi/ufs/ufshcd.h | 1 + 5 files changed, 93 insertions(+)Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +0
-0@@ -41,6 +41,12 @@ Optional properties: -lanes-per-direction : number of lanes available per direction -either 1
or 2.
Quoted 2 lines
Note that it is assume same number of lanes
isused both
Quoted 2 lines
directions at once. If not specified, default
is 2lanes per direction.
Quoted 1 line
+- dev-ref-clk-freq : Specify the device reference clock frequency, must
be one of the following:
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt Optional properties: · line 49
Quoted 5 lines
Documentation/devicetree/bindings/ufs/ufshcd-pltfrm.txt +5
-0+ 0: 19.2 MHz + 1: 26 MHz + 2: 38.4 MHz + 3: 52 MHz + Defaults to 26 MHz if not specified.I must have misunderstood your last response. I thought you could handle things without DT. If not, my question remains. [Sayali]: Ref clk frequency setting could vary from platfrom-to-platform(vendor specific). Hence we need to pass it via DT.
Currently in DT we do not set/mention any ref clk frequency
parameter. Hence I have added one new DT entry to configure
required ref clk freq.
Quoted 7 lines
Quoted 3 lines
The clocks property contains "
ref_clk". Is that not the same clock?
Why can't you read what that frequency is? Or you need to be able to change it to a specific frequency? These all look like typical oscillator frequencies, so I wouldn't expect you could change them (other than divide by 2 maybe). [Sayali] : It is the same "ref_clk", but we need to be able to change it to a specific frequency as per requirement. Thus, we need new DT entry to specify/override reference clock frequency as per need.That is not what your patch does. It just tells the device what the frequency is. If you need to get the rate, use "
clk_get_rate" on "ref_clk". If you need to actually set it to a specific frequency, then we have properties for that already (assigned-clock-rates).
Yes, we need to set it to a specific frequency. I will use "assigned-clock-rates" for passing ref_clk frequency in next patch set.
Quoted 4 lines
Seems to me that by the time you get to Linux, the bootloader would have already set this. Otherwise, how do you boot? Seems like you would want to read the attr and ensure "
ref_clk" freq matches.
Yes, ref_clk freq will be already set in device via bootloader. In Kernel, before updating ref_clk freq (if required and passed via DT), we are reading the current ref_clk set in device and only if it is different than what has been passed via DT, we will be updating ref_clk freq, otherwise we just return.
Quoted 1 line
Rob
Thanks,
Sayali
PATCH v2 2/3 scsi: ufs: Add ufs provisioning support
In reply to a message not in the archiveA new api ufshcd_do_config_device() is added in driver to support UFS provisioning at runtime. Sysfs support is added to trigger provisioning.
Device and Unit configurable parameters are parsed from vendor specific provisioning data or file and passed via sysfs at runtime to provision ufs device.
--- drivers/scsi/ufs/ufs.h | 28 +++++++ drivers/scsi/ufs/ufshcd.c | 181 ++++++++++++++++++++++++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 1 + 3 files changed, 210 insertions(+)
drivers/scsi/ufs/ufs.h +28 -0
@@ -333,6 +333,7 @@ enum { UFSHCD_AMP = 3, }; +#define UFS_BLOCK_SIZE 4096#define POWER_DESC_MAX_SIZE 0x62#define POWER_DESC_MAX_ACTV_ICC_LVLS 16
@@ -425,6 +426,33 @@ enum { MASK_TM_SERVICE_RESP = 0xFF, }; +struct ufs_unit_desc { +u8 bLUEnable;/* 1 for enabled LU */ +u8 bBootLunID;/* 0 for using this LU for boot */ +u8 bLUWriteProtect;/* 1 = power on WP, 2 = permanent WP */ +u8 bMemoryType;/* 0 for enhanced memory type */ +u32 dNumAllocUnits;/* Number of alloc unit for this LU */ +u8 bDataReliability;/* 0 for reliable write support */ +u8 bLogicalBlockSize;/* See section 13.2.3 of UFS standard */ +u8 bProvisioningType;/* 0 for thin provisioning */ +u16 wContextCapabilities;/* refer Unit Descriptor Description */ +}; + +struct ufs_config_descr { +u8 bNumberLU;/* Total number of active LUs */ +u8 bBootEnable;/* enabling device for partial init */ +u8 bDescrAccessEn;/* desc access during partial init */ +u8 bInitPowerMode;/* Initial device power mode */ +u8 bHighPriorityLUN;/* LUN of the high priority LU */ +u8 bSecureRemovalType;/* Erase config for data removal */ +u8 bInitActiveICCLevel;/* ICC level after reset */ +u16 wPeriodicRTCUpdate;/* 0 to set a priodic RTC update rate */ +u32 bConfigDescrLock;/* 1 to lock Configation Descriptor */ +u32 qVendorConfigCode;/* Vendor specific configuration code */ +struct ufs_unit_desc unit[8 ]; +u8 lun_to_grow; +}; +/* Task management service response */ enum {UPIU_TASK_MANAGEMENT_FUNC_COMPL =0x00 ,
drivers/scsi/ufs/ufshcd.c +181 -0
205 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.h +1 -0
@@ -549,6 +549,7 @@ struct ufs_hba {unsigned int irq;bool is_irq_enabled;u32 dev_ref_clk_freq; +struct ufs_config_descr cfgs;/* Interrupt aggregation support is broken */ #define UFSHCD_QUIRK_BROKEN_INTR_AGGR 0x1
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
PATCH v2 3/3 scsi: ufs: Add sysfs support for ufs provision
In reply to a message not in the archiveAdd sysfs support to trigger ufs provisioning at runtime. Usage : echo <desc_buf> > /sys/bus/platform/drivers/*/
config_descriptor/ufs_provision
To check provisioning status:
cat /sys/bus/platform/drivers/*/config_descriptor/ufs_provision 1- > Success (Reboot device to check updated provisioning)
--- Documentation/ABI/testing/sysfs-driver-ufs | 16 ++++ drivers/scsi/ufs/ufs-sysfs.c | 25 ++++++ drivers/scsi/ufs/ufs.h | 2 + drivers/scsi/ufs/ufshcd.c | 128 +++++++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 5 ++ 5 files changed, 176 insertions(+)
Documentation/ABI/testing/sysfs-driver-ufs +16 -0
@@ -883,3 +883,19 @@ Contact: Subhash Jadavani <[email protected]> Description: This entry shows the target state of an UFS UIC link for the chosen system power management level. The file is read only. + +What: /sys/bus/platform/drivers/ufshcd/*/config_descriptor/ufs_provision +Date: February 2018 +Contact: Sayali Lokhande <[email protected]> +Description: This file shows the status of runtime ufs provisioning. + This can be used to provision ufs device if bConfigDescrLock is 0. + Configuration buffer needs to be written in space separated format + specificied as: + echo <bNumberLU> <bBootEnable> <bDescrAccessEn> <bInitPowerMode> + <bHighPriorityLUN> <bSecureRemovalType> <bInitActiveICCLevel> + <wPeriodicRTCUpdate> <bConfigDescrLock> <LUNum> <bLUEnable> + <bBootLunID> <size_in_kb> <bDataReliability> <bLUWriteProtect> + <bMemoryType> <bLogicalBlockSize> <bProvisioningType> + <wContextCapabilities> > ufs_provision + To check updated configuration check unit_descriptor and + device_descriptor sysfs fields.
drivers/scsi/ufs/ufs-sysfs.c +25 -0
@@ -252,6 +252,30 @@ static ssize_t ufs_sysfs_read_desc_param(struct ufs_hba *hba,return ret; } +static ssize_t ufs_provision_show (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return ufshcd_desc_config_show (dev, attr, buf); +} + +static ssize_t ufs_provision_store (struct device *dev, +struct device_attribute *attr,const char *buf,size_t count) +{ +return ufshcd_desc_config_store (dev, attr, buf, count); +} + +DEVICE_ATTR_RW (ufs_provision); + +static struct attribute *ufs_sysfs_config_descriptor[] = { + &dev_attr_ufs_provision.attr, +NULL , +}; + +static const struct attribute_group ufs_sysfs_config_descriptor_group = { + .name ="config_descriptor" , + .attrs = ufs_sysfs_config_descriptor, +}; +#define UFS_DESC_PARAM (_name, _puname, _duname, _size) \ static ssize_t _name##_show(struct device *dev, \ struct device_attribute *attr, char *buf) \
@@ -713,6 +737,7 @@ static DEVICE_ATTR_RO(_name)static const struct attribute_group *ufs_sysfs_groups[] = { &ufs_sysfs_default_group, &ufs_sysfs_device_descriptor_group, + &ufs_sysfs_config_descriptor_group, &ufs_sysfs_interconnect_descriptor_group, &ufs_sysfs_geometry_descriptor_group, &ufs_sysfs_health_descriptor_group,
drivers/scsi/ufs/ufs.h +2 -0
@@ -427,6 +427,7 @@ enum { };struct ufs_unit_desc { +u8 LUNum;u8 bLUEnable;/* 1 for enabled LU */ u8 bBootLunID;/* 0 for using this LU for boot */ u8 bLUWriteProtect;/* 1 = power on WP, 2 = permanent WP */
@@ -451,6 +452,7 @@ struct ufs_config_descr {u32 qVendorConfigCode;/* Vendor specific configuration code */ struct ufs_unit_desc unit[8 ];u8 lun_to_grow; +u8 num_luns; };/* Task management service response */
drivers/scsi/ufs/ufshcd.c +128 -0
140 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.h +5 -0
@@ -651,6 +651,7 @@ struct ufs_hba {struct ufs_pwr_mode_info max_pwr_info;struct ufs_clk_gating clk_gating; +bool provision_enabled;/* Control to enable/disable host capabilities */ u32 caps;/* Allow dynamic clk gating */
@@ -867,6 +868,10 @@ int ufshcd_read_string_desc(struct ufs_hba *hba, int desc_index,int ufshcd_hold (struct ufs_hba *hba,bool async);void ufshcd_release (struct ufs_hba *hba); +ssize_t ufshcd_desc_config_show (struct device *dev, +struct device_attribute *attr,char *buf); +ssize_t ufshcd_desc_config_store (struct device *dev, +struct device_attribute *attr,const char *buf,size_t count);int ufshcd_map_desc_id_to_length (struct ufs_hba *hba,enum desc_idn desc_id,int *desc_length);
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
Re: [PATCH V2 3/3] scsi: ufs: Add sysfs support for ufs provision
Quoted 28 lines · Sayali Lokhande
Add sysfs support to trigger ufs provisioning at runtime. Usage : echo <
desc_buf> >/sys/bus/platform/drivers/*/
config_descriptor/ufs_provision
To check provisioning status:
cat/sys/bus/platform/drivers/*/config_descriptor/ufs_provision1- > Success (Reboot device to check updated provisioning)Signed-off-by Sayali Lokhande <[email protected]>--- Documentation/ABI/testing/sysfs-driver-ufs | 16 ++++ drivers/scsi/ufs/ufs-sysfs.c | 25 ++++++ drivers/scsi/ufs/ufs.h | 2 + drivers/scsi/ufs/ufshcd.c | 128 +++++++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 5 ++ 5 files changed, 176 insertions(+)Documentation/ABI/testing/sysfs-driver-ufs +4
-0@@ -883,3 +883,19 @@ Contact: Subhash Jadavani <[email protected]> Description: This entry shows the target state of an UFS UIC link for the chosen system power management level. The file is read only. + +What: /sys/bus/platform/drivers/ufshcd/*/config_descriptor/ufs_provision +Date: February 2018 +Contact: Sayali Lokhande <[email protected]>
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 899
Quoted 10 lines
Documentation/ABI/testing/sysfs-driver-ufs +10
-0+Description: This file shows the status of runtime ufs provisioning. + This can be used to provision ufs device if bConfigDescrLock is 0. + Configuration buffer needs to be written in space separated format + specificied as: + echo <bNumberLU> <bBootEnable> <bDescrAccessEn> <bInitPowerMode> + <bHighPriorityLUN> <bSecureRemovalType> <bInitActiveICCLevel> + <wPeriodicRTCUpdate> <bConfigDescrLock> <LUNum> <bLUEnable> + <bBootLunID> <size_in_kb> <bDataReliability> <bLUWriteProtect> + <bMemoryType> <bLogicalBlockSize> <bProvisioningType> + <wContextCapabilities> > ufs_provision
That's crazy big, please use configfs for this if you really want to "provision" hardware with a new api. That is what configfs was created for, do not abuse sysfs like this, it is not a "single" value.
thanks,
greg k-h
RE: [PATCH V2 3/3] scsi: ufs: Add sysfs support for ufs provision
-----Original Message-----
From: Greg Kroah-Hartman [mailto:[email protected]]
Sent: Saturday, June 09, 2018 12:55 PM
To: Sayali Lokhande <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Stanislav Nijnikov <[email protected]>; Adrian Hunter <[email protected]>; open list <[email protected]>
Subject: Re: [PATCH V2 3/3] scsi: ufs: Add sysfs support for ufs provision
Quoted 7 lines · Sayali Lokhande
Add sysfs support to trigger ufs provisioning at runtime. Usage : echo <
desc_buf> >/sys/bus/platform/drivers/*/
config_descriptor/ufs_provision
To check provisioning status:
cat/sys/bus/platform/drivers/*/config_descriptor/ufs_provision1- > Success (Reboot device to check updated provisioning)
Quoted 6 lines
Signed-off-by Sayali Lokhande <[email protected]>--- Documentation/ABI/testing/sysfs-driver-ufs | 16 ++++ drivers/scsi/ufs/ufs-sysfs.c | 25 ++++++ drivers/scsi/ufs/ufs.h | 2 + drivers/scsi/ufs/ufshcd.c | 128
+++++++++++++++++++++++++++++
Quoted 9 lines
drivers/scsi/ufs/ufshcd.h | 5 ++ 5 files changed, 176 insertions(+)Documentation/ABI/testing/sysfs-driver-ufs +0
-0
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 887
Quoted 5 lines
Documentation/ABI/testing/sysfs-driver-ufs +2
-0@@ -883,3 +883,19 @@ Contact: Subhash Jadavani <[email protected]> Description: This entry shows the target state of an UFS UIC link for the chosen system power management level. The file is read only. + +What:
/sys/bus/platform/drivers/ufshcd/*/config_descriptor/ufs_provision
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]>
Quoted 4 lines
Documentation/ABI/testing/sysfs-driver-ufs +4
-0+Date: February 2018 +Contact: Sayali Lokhande <[email protected]> +Description: This file shows the status of runtime ufs provisioning. + This can be used to provision ufs device if bConfigDescrLock
is 0.
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 892
Quoted 1 line
Documentation/ABI/testing/sysfs-driver-ufs +1
-0+ Configuration buffer needs to be written in space separated
format
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 894
Quoted 2 lines
Documentation/ABI/testing/sysfs-driver-ufs +2
-0+ specificied as: + echo <bNumberLU> <bBootEnable> <bDescrAccessEn>
<bInitPowerMode>
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 895
Quoted 1 line
Documentation/ABI/testing/sysfs-driver-ufs +1
-0+ <bHighPriorityLUN> <bSecureRemovalType>
<bInitActiveICCLevel>
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 897
Quoted 2 lines
Documentation/ABI/testing/sysfs-driver-ufs +2
-0+ <wPeriodicRTCUpdate> <bConfigDescrLock> <LUNum> <bLUEnable> + <bBootLunID> <size_in_kb> <bDataReliability>
<bLUWriteProtect>
Documentation/ABI/testing/sysfs-driver-ufs Contact: Subhash Jadavani <[email protected]> · line 899
Quoted 2 lines
Documentation/ABI/testing/sysfs-driver-ufs +2
-0+ <bMemoryType> <bLogicalBlockSize> <bProvisioningType> + <wContextCapabilities> > ufs_provision
That's crazy big, please use configfs for this if you really want to "provision" hardware with a new api. That is what configfs was created for, do not abuse sysfs like this, it is not a "single" value. [Sayali] Sure. I will check and update my next patchset accordingly to use configfs for provisioning at runtime.
thanks,
greg k-h
kbuild test robot
build bot[RFC PATCH] scsi: ufs: dev_attr_ufs_provision can be static
In reply to Sayali LokhandeFixes: 2f7e32b8cdc9 ("scsi: ufs: Add sysfs support for ufs provision")
--- ufs-sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/scsi/ufs/ufs-sysfs.c +1 -1
@@ -264,7 +264,7 @@ static ssize_t ufs_provision_store(struct device *dev,return ufshcd_desc_config_store (dev, attr, buf, count); } -DEVICE_ATTR_RW (ufs_provision); +static DEVICE_ATTR_RW (ufs_provision);static struct attribute *ufs_sysfs_config_descriptor[] = { &dev_attr_ufs_provision.attr,
kbuild test robot
build botRe: [PATCH V2 3/3] scsi: ufs: Add sysfs support for ufs provision
In reply to Sayali LokhandeThank you for the patch! Perhaps something to improve:
Hi Sayali,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on robh/for-next]
[also build test WARNING on v4.17 next-20180608]
[cannot apply to mkp-scsi/for-next scsi/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Sayali-Lokhande/Add-ufs-provisioning-support-in-driver/20180609-151315 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
>> drivers/scsi/ufs/ufs-sysfs.c:267:1: sparse: symbol 'dev_attr_ufs_provision' was not declared. Should it be static?
Please review and possibly fold the followup patch.
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation