Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
642fc4fa
Commit
642fc4fa
authored
Nov 15, 2021
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge existing fixes from spi/for-5.16 into new branch
parents
fa55b7dc
6c53b45c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
38 additions
and
16 deletions
+38
-16
drivers/spi/spi-cadence-quadspi.c
drivers/spi/spi-cadence-quadspi.c
+21
-3
drivers/spi/spi-fsl-lpspi.c
drivers/spi/spi-fsl-lpspi.c
+1
-1
drivers/spi/spi-geni-qcom.c
drivers/spi/spi-geni-qcom.c
+10
-6
drivers/spi/spi.c
drivers/spi/spi.c
+6
-6
No files found.
drivers/spi/spi-cadence-quadspi.c
View file @
642fc4fa
...
...
@@ -37,6 +37,7 @@
#define CQSPI_NEEDS_WR_DELAY BIT(0)
#define CQSPI_DISABLE_DAC_MODE BIT(1)
#define CQSPI_SUPPORT_EXTERNAL_DMA BIT(2)
#define CQSPI_NO_SUPPORT_WR_COMPLETION BIT(3)
/* Capabilities */
#define CQSPI_SUPPORTS_OCTAL BIT(0)
...
...
@@ -86,6 +87,7 @@ struct cqspi_st {
struct
cqspi_flash_pdata
f_pdata
[
CQSPI_MAX_CHIPSELECT
];
bool
use_dma_read
;
u32
pd_dev_id
;
bool
wr_completion
;
};
struct
cqspi_driver_platdata
{
...
...
@@ -996,9 +998,11 @@ static int cqspi_write_setup(struct cqspi_flash_pdata *f_pdata,
* polling on the controller's side. spinand and spi-nor will take
* care of polling the status register.
*/
reg
=
readl
(
reg_base
+
CQSPI_REG_WR_COMPLETION_CTRL
);
reg
|=
CQSPI_REG_WR_DISABLE_AUTO_POLL
;
writel
(
reg
,
reg_base
+
CQSPI_REG_WR_COMPLETION_CTRL
);
if
(
cqspi
->
wr_completion
)
{
reg
=
readl
(
reg_base
+
CQSPI_REG_WR_COMPLETION_CTRL
);
reg
|=
CQSPI_REG_WR_DISABLE_AUTO_POLL
;
writel
(
reg
,
reg_base
+
CQSPI_REG_WR_COMPLETION_CTRL
);
}
reg
=
readl
(
reg_base
+
CQSPI_REG_SIZE
);
reg
&=
~
CQSPI_REG_SIZE_ADDRESS_MASK
;
...
...
@@ -1736,6 +1740,10 @@ static int cqspi_probe(struct platform_device *pdev)
cqspi
->
master_ref_clk_hz
=
clk_get_rate
(
cqspi
->
clk
);
master
->
max_speed_hz
=
cqspi
->
master_ref_clk_hz
;
/* write completion is supported by default */
cqspi
->
wr_completion
=
true
;
ddata
=
of_device_get_match_data
(
dev
);
if
(
ddata
)
{
if
(
ddata
->
quirks
&
CQSPI_NEEDS_WR_DELAY
)
...
...
@@ -1747,6 +1755,8 @@ static int cqspi_probe(struct platform_device *pdev)
cqspi
->
use_direct_mode
=
true
;
if
(
ddata
->
quirks
&
CQSPI_SUPPORT_EXTERNAL_DMA
)
cqspi
->
use_dma_read
=
true
;
if
(
ddata
->
quirks
&
CQSPI_NO_SUPPORT_WR_COMPLETION
)
cqspi
->
wr_completion
=
false
;
if
(
of_device_is_compatible
(
pdev
->
dev
.
of_node
,
"xlnx,versal-ospi-1.0"
))
...
...
@@ -1859,6 +1869,10 @@ static const struct cqspi_driver_platdata intel_lgm_qspi = {
.
quirks
=
CQSPI_DISABLE_DAC_MODE
,
};
static
const
struct
cqspi_driver_platdata
socfpga_qspi
=
{
.
quirks
=
CQSPI_NO_SUPPORT_WR_COMPLETION
,
};
static
const
struct
cqspi_driver_platdata
versal_ospi
=
{
.
hwcaps_mask
=
CQSPI_SUPPORTS_OCTAL
,
.
quirks
=
CQSPI_DISABLE_DAC_MODE
|
CQSPI_SUPPORT_EXTERNAL_DMA
,
...
...
@@ -1887,6 +1901,10 @@ static const struct of_device_id cqspi_dt_ids[] = {
.
compatible
=
"xlnx,versal-ospi-1.0"
,
.
data
=
(
void
*
)
&
versal_ospi
,
},
{
.
compatible
=
"intel,socfpga-qspi"
,
.
data
=
(
void
*
)
&
socfpga_qspi
,
},
{
/* end of table */
}
};
...
...
drivers/spi/spi-fsl-lpspi.c
View file @
642fc4fa
...
...
@@ -912,7 +912,7 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
ret
=
devm_spi_register_controller
(
&
pdev
->
dev
,
controller
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"spi_register_controller error.
\n
"
);
dev_err
_probe
(
&
pdev
->
dev
,
ret
,
"spi_register_controller error: %i
\n
"
,
ret
);
goto
out_pm_get
;
}
...
...
drivers/spi/spi-geni-qcom.c
View file @
642fc4fa
...
...
@@ -491,22 +491,26 @@ static int spi_geni_grab_gpi_chan(struct spi_geni_master *mas)
int
ret
;
mas
->
tx
=
dma_request_chan
(
mas
->
dev
,
"tx"
);
ret
=
dev_err_probe
(
mas
->
dev
,
IS_ERR
(
mas
->
tx
),
"Failed to get tx DMA ch
\n
"
);
if
(
ret
<
0
)
if
(
IS_ERR
(
mas
->
tx
))
{
ret
=
dev_err_probe
(
mas
->
dev
,
PTR_ERR
(
mas
->
tx
),
"Failed to get tx DMA ch
\n
"
);
goto
err_tx
;
}
mas
->
rx
=
dma_request_chan
(
mas
->
dev
,
"rx"
);
ret
=
dev_err_probe
(
mas
->
dev
,
IS_ERR
(
mas
->
rx
),
"Failed to get rx DMA ch
\n
"
);
if
(
ret
<
0
)
if
(
IS_ERR
(
mas
->
rx
))
{
ret
=
dev_err_probe
(
mas
->
dev
,
PTR_ERR
(
mas
->
rx
),
"Failed to get rx DMA ch
\n
"
);
goto
err_rx
;
}
return
0
;
err_rx:
mas
->
rx
=
NULL
;
dma_release_channel
(
mas
->
tx
);
mas
->
tx
=
NULL
;
err_tx:
mas
->
r
x
=
NULL
;
mas
->
t
x
=
NULL
;
return
ret
;
}
...
...
drivers/spi/spi.c
View file @
642fc4fa
...
...
@@ -3099,12 +3099,6 @@ void spi_unregister_controller(struct spi_controller *ctlr)
device_del
(
&
ctlr
->
dev
);
/* Release the last reference on the controller if its driver
* has not yet been converted to devm_spi_alloc_master/slave().
*/
if
(
!
ctlr
->
devm_allocated
)
put_device
(
&
ctlr
->
dev
);
/* free bus id */
mutex_lock
(
&
board_lock
);
if
(
found
==
ctlr
)
...
...
@@ -3113,6 +3107,12 @@ void spi_unregister_controller(struct spi_controller *ctlr)
if
(
IS_ENABLED
(
CONFIG_SPI_DYNAMIC
))
mutex_unlock
(
&
ctlr
->
add_lock
);
/* Release the last reference on the controller if its driver
* has not yet been converted to devm_spi_alloc_master/slave().
*/
if
(
!
ctlr
->
devm_allocated
)
put_device
(
&
ctlr
->
dev
);
}
EXPORT_SYMBOL_GPL
(
spi_unregister_controller
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment