[U-Boot] [PATCH 2/4] spi: cadence_qspi: Fix fdt read of spi-max-frequency

Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de --- Changes for v2 - Add unsigned casting for plat->max_hz --- drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
- /* Use 500KHz as a suitable default */ - plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency", - 500000); - /* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) { @@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
+ /* Use 500KHz as a suitable default */ + plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode, + "spi-max-frequency", 500000); + /* Read other parameters from DT */ plat->page_size = fdtdec_get_int(blob, subnode, "page-size", 256); plat->block_size = fdtdec_get_int(blob, subnode, "block-size", 16);

On 8 September 2015 at 06:48, Chin Liang See clsee@altera.com wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
/* Use 500KHz as a suitable default */
plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
/* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
/* Use 500KHz as a suitable default */
plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
fdtdec_get_int will return default_val (say 500000 here) or property value from dts which is usually "unsigned", unless wrongly set as -ve value ie reason there is no typecasting used in rest of the code.
But, if still worried, better to add unsigned fdtdec_get_* instead of type casting.
/* Read other parameters from DT */ plat->page_size = fdtdec_get_int(blob, subnode, "page-size", 256); plat->block_size = fdtdec_get_int(blob, subnode, "block-size", 16);
-- 1.7.7.4
thanks!

Hi,
On Tue, 2015-09-08 at 15:39 +0530, Jagan Teki wrote:
On 8 September 2015 at 06:48, Chin Liang See clsee@altera.com wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
/* Use 500KHz as a suitable default */
plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
/* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
/* Use 500KHz as a suitable default */
plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
fdtdec_get_int will return default_val (say 500000 here) or property value from dts which is usually "unsigned", unless wrongly set as -ve value ie reason there is no typecasting used in rest of the code.
But, if still worried, better to add unsigned fdtdec_get_* instead of type casting.
Thanks to Marek, I will use fdt_getprop_u32_default_node to achieve this :)
Thanks Chin Liang
/* Read other parameters from DT */ plat->page_size = fdtdec_get_int(blob, subnode, "page-size", 256); plat->block_size = fdtdec_get_int(blob, subnode, "block-size", 16);
-- 1.7.7.4
thanks!

On Tuesday, September 08, 2015 at 03:18:24 AM, Chin Liang See wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
- /* Use 500KHz as a suitable default */
- plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
- /* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
- /* Use 500KHz as a suitable default */
- plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
fdt_getprop_u32() might be the right thing to do here :)
Best regards, Marek Vasut

Hi,
On Tue, 2015-09-08 at 13:19 +0200, marex@denx.de wrote:
On Tuesday, September 08, 2015 at 03:18:24 AM, Chin Liang See wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
- /* Use 500KHz as a suitable default */
- plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
- /* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
- /* Use 500KHz as a suitable default */
- plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
fdt_getprop_u32() might be the right thing to do here :)
Cool, yup, I am using fdt_getprop_u32_default_node. But need additional patch to enable this and more FDT related function in SPL
Thanks Chin Liang
Best regards, Marek Vasut

On Thursday, September 10, 2015 at 06:58:10 AM, Chin Liang See wrote:
Hi,
On Tue, 2015-09-08 at 13:19 +0200, marex@denx.de wrote:
On Tuesday, September 08, 2015 at 03:18:24 AM, Chin Liang See wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0];
plat->ahbbase = (void *)data[2];
/* Use 500KHz as a suitable default */
plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
/* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV;
}
- /* Use 500KHz as a suitable default */
- plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
fdt_getprop_u32() might be the right thing to do here :)
Cool, yup, I am using fdt_getprop_u32_default_node. But need additional patch to enable this and more FDT related function in SPL
All right, be careful not to blow the SPL size too much btw.
Best regards, Marek Vasut

On Mon 2015-09-07 20:18:24, Chin Liang See wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
- /* Use 500KHz as a suitable default */
- plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
- /* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
- /* Use 500KHz as a suitable default */
And as you'll be updating it... it should be "500 kHz", AFAICT.
- plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
- /* Read other parameters from DT */ plat->page_size = fdtdec_get_int(blob, subnode, "page-size", 256); plat->block_size = fdtdec_get_int(blob, subnode, "block-size",
16);
Pavel

Hi,
On Wed, 2015-09-09 at 09:16 +0200, ZY - pavel wrote:
On Mon 2015-09-07 20:18:24, Chin Liang See wrote:
Fix the fdt read for spi-max-frequency as it's contained in the child node. Current state of code is always returning default value.
Signed-off-by: Chin Liang See clsee@altera.com Cc: Dinh Nguyen dinguyen@opensource.altera.com Cc: Dinh Nguyen dinh.linux@gmail.com Cc: Marek Vasut marex@denx.de Cc: Stefan Roese sr@denx.de Cc: Vikas Manocha vikas.manocha@st.com Cc: Jagannadh Teki jteki@openedev.com Cc: Pavel Machek pavel@denx.de
Changes for v2
- Add unsigned casting for plat->max_hz
drivers/spi/cadence_qspi.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 23c88d5..8c0f7dd 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -296,10 +296,6 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) plat->regbase = (void *)data[0]; plat->ahbbase = (void *)data[2];
- /* Use 500KHz as a suitable default */
- plat->max_hz = fdtdec_get_int(blob, node, "spi-max-frequency",
500000);
- /* All other paramters are embedded in the child node */ subnode = fdt_first_subnode(blob, node); if (subnode < 0) {
@@ -307,6 +303,10 @@ static int cadence_spi_ofdata_to_platdata(struct udevice *bus) return -ENODEV; }
- /* Use 500KHz as a suitable default */
And as you'll be updating it... it should be "500 kHz", AFAICT.
That sounds easy fix :)
Thanks Chin Liang
- plat->max_hz = (unsigned int)fdtdec_get_int(blob, subnode,
"spi-max-frequency", 500000);
- /* Read other parameters from DT */ plat->page_size = fdtdec_get_int(blob, subnode, "page-size", 256); plat->block_size = fdtdec_get_int(blob, subnode, "block-size",
16);
Pavel
participants (4)
-
Chin Liang See
-
Jagan Teki
-
Marek Vasut
-
Pavel Machek