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
52d85ebb
Commit
52d85ebb
authored
Oct 25, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'spi/topic/bfin' into spi-next
parents
2ef2e60d
db9371b8
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
88 additions
and
88 deletions
+88
-88
Documentation/driver-model/devres.txt
Documentation/driver-model/devres.txt
+3
-0
drivers/spi/spi-bcm2835.c
drivers/spi/spi-bcm2835.c
+1
-3
drivers/spi/spi-bcm63xx.c
drivers/spi/spi-bcm63xx.c
+1
-5
drivers/spi/spi-bfin-sport.c
drivers/spi/spi-bfin-sport.c
+14
-13
drivers/spi/spi-bfin-v3.c
drivers/spi/spi-bfin-v3.c
+1
-2
drivers/spi/spi-bfin5xx.c
drivers/spi/spi-bfin5xx.c
+15
-12
drivers/spi/spi-clps711x.c
drivers/spi/spi-clps711x.c
+1
-3
drivers/spi/spi-ep93xx.c
drivers/spi/spi-ep93xx.c
+1
-2
drivers/spi/spi-mpc512x-psc.c
drivers/spi/spi-mpc512x-psc.c
+1
-3
drivers/spi/spi-mxs.c
drivers/spi/spi-mxs.c
+1
-3
drivers/spi/spi-octeon.c
drivers/spi/spi-octeon.c
+1
-3
drivers/spi/spi-omap-100k.c
drivers/spi/spi-omap-100k.c
+1
-3
drivers/spi/spi-omap2-mcspi.c
drivers/spi/spi-omap2-mcspi.c
+1
-2
drivers/spi/spi-orion.c
drivers/spi/spi-orion.c
+1
-3
drivers/spi/spi-pl022.c
drivers/spi/spi-pl022.c
+1
-5
drivers/spi/spi-pxa2xx.c
drivers/spi/spi-pxa2xx.c
+1
-4
drivers/spi/spi-sh-hspi.c
drivers/spi/spi-sh-hspi.c
+1
-2
drivers/spi/spi-tegra114.c
drivers/spi/spi-tegra114.c
+1
-2
drivers/spi/spi-tegra20-sflash.c
drivers/spi/spi-tegra20-sflash.c
+1
-2
drivers/spi/spi-tegra20-slink.c
drivers/spi/spi-tegra20-slink.c
+1
-2
drivers/spi/spi-ti-qspi.c
drivers/spi/spi-ti-qspi.c
+1
-11
drivers/spi/spi-txx9.c
drivers/spi/spi-txx9.c
+1
-3
drivers/spi/spi.c
drivers/spi/spi.c
+35
-0
include/linux/spi/spi.h
include/linux/spi/spi.h
+2
-0
No files found.
Documentation/driver-model/devres.txt
View file @
52d85ebb
...
...
@@ -302,3 +302,6 @@ PHY
SLAVE DMA ENGINE
devm_acpi_dma_controller_register()
SPI
devm_spi_register_master()
drivers/spi/spi-bcm2835.c
View file @
52d85ebb
...
...
@@ -358,7 +358,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
bcm2835_wr
(
bs
,
BCM2835_SPI_CS
,
BCM2835_SPI_CS_CLEAR_RX
|
BCM2835_SPI_CS_CLEAR_TX
);
err
=
spi_register_master
(
master
);
err
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
err
)
{
dev_err
(
&
pdev
->
dev
,
"could not register SPI master: %d
\n
"
,
err
);
goto
out_free_irq
;
...
...
@@ -381,14 +381,12 @@ static int bcm2835_spi_remove(struct platform_device *pdev)
struct
bcm2835_spi
*
bs
=
spi_master_get_devdata
(
master
);
free_irq
(
bs
->
irq
,
master
);
spi_unregister_master
(
master
);
/* Clear FIFOs, and disable the HW block */
bcm2835_wr
(
bs
,
BCM2835_SPI_CS
,
BCM2835_SPI_CS_CLEAR_RX
|
BCM2835_SPI_CS_CLEAR_TX
);
clk_disable_unprepare
(
bs
->
clk
);
spi_master_put
(
master
);
return
0
;
}
...
...
drivers/spi/spi-bcm63xx.c
View file @
52d85ebb
...
...
@@ -412,7 +412,7 @@ static int bcm63xx_spi_probe(struct platform_device *pdev)
bcm_spi_writeb
(
bs
,
SPI_INTR_CLEAR_ALL
,
SPI_INT_STATUS
);
/* register and we are done */
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
dev
,
master
);
if
(
ret
)
{
dev_err
(
dev
,
"spi register failed
\n
"
);
goto
out_clk_disable
;
...
...
@@ -438,8 +438,6 @@ static int bcm63xx_spi_remove(struct platform_device *pdev)
struct
spi_master
*
master
=
spi_master_get
(
platform_get_drvdata
(
pdev
));
struct
bcm63xx_spi
*
bs
=
spi_master_get_devdata
(
master
);
spi_unregister_master
(
master
);
/* reset spi block */
bcm_spi_writeb
(
bs
,
0
,
SPI_INT_MASK
);
...
...
@@ -447,8 +445,6 @@ static int bcm63xx_spi_remove(struct platform_device *pdev)
clk_disable_unprepare
(
bs
->
clk
);
clk_put
(
bs
->
clk
);
spi_master_put
(
master
);
return
0
;
}
...
...
drivers/spi/spi-bfin-sport.c
View file @
52d85ebb
...
...
@@ -879,11 +879,10 @@ static int bfin_sport_spi_remove(struct platform_device *pdev)
return
0
;
}
#ifdef CONFIG_PM
static
int
bfin_sport_spi_suspend
(
struct
platform_device
*
pdev
,
pm_message_t
state
)
#ifdef CONFIG_PM_SLEEP
static
int
bfin_sport_spi_suspend
(
struct
device
*
dev
)
{
struct
bfin_sport_spi_master_data
*
drv_data
=
platform_get_drvdata
(
p
dev
);
struct
bfin_sport_spi_master_data
*
drv_data
=
dev_get_drvdata
(
dev
);
int
status
;
status
=
bfin_sport_spi_stop_queue
(
drv_data
);
...
...
@@ -896,10 +895,9 @@ bfin_sport_spi_suspend(struct platform_device *pdev, pm_message_t state)
return
status
;
}
static
int
bfin_sport_spi_resume
(
struct
platform_device
*
pdev
)
static
int
bfin_sport_spi_resume
(
struct
device
*
dev
)
{
struct
bfin_sport_spi_master_data
*
drv_data
=
platform_get_drvdata
(
p
dev
);
struct
bfin_sport_spi_master_data
*
drv_data
=
dev_get_drvdata
(
dev
);
int
status
;
/* Enable the SPI interface */
...
...
@@ -912,19 +910,22 @@ bfin_sport_spi_resume(struct platform_device *pdev)
return
status
;
}
static
SIMPLE_DEV_PM_OPS
(
bfin_sport_spi_pm_ops
,
bfin_sport_spi_suspend
,
bfin_sport_spi_resume
);
#define BFIN_SPORT_SPI_PM_OPS (&bfin_sport_spi_pm_ops)
#else
# define bfin_sport_spi_suspend NULL
# define bfin_sport_spi_resume NULL
#define BFIN_SPORT_SPI_PM_OPS NULL
#endif
static
struct
platform_driver
bfin_sport_spi_driver
=
{
.
driver
=
{
.
name
=
DRV_NAME
,
.
owner
=
THIS_MODULE
,
.
name
=
DRV_NAME
,
.
owner
=
THIS_MODULE
,
.
pm
=
BFIN_SPORT_SPI_PM_OPS
,
},
.
probe
=
bfin_sport_spi_probe
,
.
remove
=
bfin_sport_spi_remove
,
.
suspend
=
bfin_sport_spi_suspend
,
.
resume
=
bfin_sport_spi_resume
,
};
module_platform_driver
(
bfin_sport_spi_driver
);
drivers/spi/spi-bfin-v3.c
View file @
52d85ebb
...
...
@@ -867,7 +867,7 @@ static int bfin_spi_probe(struct platform_device *pdev)
tasklet_init
(
&
drv_data
->
pump_transfers
,
bfin_spi_pump_transfers
,
(
unsigned
long
)
drv_data
);
/* register with the SPI framework */
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
dev
,
master
);
if
(
ret
)
{
dev_err
(
dev
,
"can not register spi master
\n
"
);
goto
err_free_peripheral
;
...
...
@@ -898,7 +898,6 @@ static int bfin_spi_remove(struct platform_device *pdev)
free_dma
(
drv_data
->
rx_dma
);
free_dma
(
drv_data
->
tx_dma
);
spi_unregister_master
(
drv_data
->
master
);
return
0
;
}
...
...
drivers/spi/spi-bfin5xx.c
View file @
52d85ebb
...
...
@@ -1411,10 +1411,10 @@ static int bfin_spi_remove(struct platform_device *pdev)
return
0
;
}
#ifdef CONFIG_PM
static
int
bfin_spi_suspend
(
struct
platform_device
*
pdev
,
pm_message_t
state
)
#ifdef CONFIG_PM
_SLEEP
static
int
bfin_spi_suspend
(
struct
device
*
dev
)
{
struct
bfin_spi_master_data
*
drv_data
=
platform_get_drvdata
(
p
dev
);
struct
bfin_spi_master_data
*
drv_data
=
dev_get_drvdata
(
dev
);
int
status
=
0
;
status
=
bfin_spi_stop_queue
(
drv_data
);
...
...
@@ -1433,9 +1433,9 @@ static int bfin_spi_suspend(struct platform_device *pdev, pm_message_t state)
return
0
;
}
static
int
bfin_spi_resume
(
struct
platform_device
*
p
dev
)
static
int
bfin_spi_resume
(
struct
device
*
dev
)
{
struct
bfin_spi_master_data
*
drv_data
=
platform_get_drvdata
(
p
dev
);
struct
bfin_spi_master_data
*
drv_data
=
dev_get_drvdata
(
dev
);
int
status
=
0
;
bfin_write
(
&
drv_data
->
regs
->
ctl
,
drv_data
->
ctrl_reg
);
...
...
@@ -1444,31 +1444,34 @@ static int bfin_spi_resume(struct platform_device *pdev)
/* Start the queue running */
status
=
bfin_spi_start_queue
(
drv_data
);
if
(
status
!=
0
)
{
dev_err
(
&
pdev
->
dev
,
"problem starting queue (%d)
\n
"
,
status
);
dev_err
(
dev
,
"problem starting queue (%d)
\n
"
,
status
);
return
status
;
}
return
0
;
}
static
SIMPLE_DEV_PM_OPS
(
bfin_spi_pm_ops
,
bfin_spi_suspend
,
bfin_spi_resume
);
#define BFIN_SPI_PM_OPS (&bfin_spi_pm_ops)
#else
#define bfin_spi_suspend NULL
#define bfin_spi_resume NULL
#endif
/* CONFIG_PM */
#define BFIN_SPI_PM_OPS NULL
#endif
MODULE_ALIAS
(
"platform:bfin-spi"
);
static
struct
platform_driver
bfin_spi_driver
=
{
.
driver
=
{
.
name
=
DRV_NAME
,
.
owner
=
THIS_MODULE
,
.
pm
=
BFIN_SPI_PM_OPS
,
},
.
suspend
=
bfin_spi_suspend
,
.
resume
=
bfin_spi_resume
,
.
probe
=
bfin_spi_probe
,
.
remove
=
bfin_spi_remove
,
};
static
int
__init
bfin_spi_init
(
void
)
{
return
platform_driver_
probe
(
&
bfin_spi_driver
,
bfin_spi_probe
);
return
platform_driver_
register
(
&
bfin_spi_driver
);
}
subsys_initcall
(
bfin_spi_init
);
...
...
drivers/spi/spi-clps711x.c
View file @
52d85ebb
...
...
@@ -229,7 +229,7 @@ static int spi_clps711x_probe(struct platform_device *pdev)
goto
clk_out
;
}
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
!
ret
)
{
dev_info
(
&
pdev
->
dev
,
"SPI bus driver initialized. Master clock %u Hz
\n
"
,
...
...
@@ -260,8 +260,6 @@ static int spi_clps711x_remove(struct platform_device *pdev)
if
(
gpio_is_valid
(
hw
->
chipselect
[
i
]))
gpio_free
(
hw
->
chipselect
[
i
]);
spi_unregister_master
(
master
);
return
0
;
}
...
...
drivers/spi/spi-ep93xx.c
View file @
52d85ebb
...
...
@@ -942,7 +942,7 @@ static int ep93xx_spi_probe(struct platform_device *pdev)
/* make sure that the hardware is disabled */
ep93xx_spi_write_u8
(
espi
,
SSPCR1
,
0
);
error
=
spi_register_master
(
master
);
error
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
error
)
{
dev_err
(
&
pdev
->
dev
,
"failed to register SPI master
\n
"
);
goto
fail_free_dma
;
...
...
@@ -968,7 +968,6 @@ static int ep93xx_spi_remove(struct platform_device *pdev)
ep93xx_spi_release_dma
(
espi
);
spi_unregister_master
(
master
);
return
0
;
}
...
...
drivers/spi/spi-mpc512x-psc.c
View file @
52d85ebb
...
...
@@ -536,7 +536,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
if
(
ret
<
0
)
goto
free_clock
;
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
dev
,
master
);
if
(
ret
<
0
)
goto
free_clock
;
...
...
@@ -559,12 +559,10 @@ static int mpc512x_psc_spi_do_remove(struct device *dev)
struct
spi_master
*
master
=
spi_master_get
(
dev_get_drvdata
(
dev
));
struct
mpc512x_psc_spi
*
mps
=
spi_master_get_devdata
(
master
);
spi_unregister_master
(
master
);
clk_disable_unprepare
(
mps
->
clk_mclk
);
free_irq
(
mps
->
irq
,
mps
);
if
(
mps
->
psc
)
iounmap
(
mps
->
psc
);
spi_master_put
(
master
);
return
0
;
}
...
...
drivers/spi/spi-mxs.c
View file @
52d85ebb
...
...
@@ -571,7 +571,7 @@ static int mxs_spi_probe(struct platform_device *pdev)
platform_set_drvdata
(
pdev
,
master
);
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"Cannot register SPI master, %d
\n
"
,
ret
);
goto
out_disable_clk
;
...
...
@@ -598,10 +598,8 @@ static int mxs_spi_remove(struct platform_device *pdev)
spi
=
spi_master_get_devdata
(
master
);
ssp
=
&
spi
->
ssp
;
spi_unregister_master
(
master
);
clk_disable_unprepare
(
ssp
->
clk
);
dma_release_channel
(
ssp
->
dmach
);
spi_master_put
(
master
);
return
0
;
}
...
...
drivers/spi/spi-octeon.c
View file @
52d85ebb
...
...
@@ -272,7 +272,7 @@ static int octeon_spi_probe(struct platform_device *pdev)
master
->
bits_per_word_mask
=
SPI_BPW_MASK
(
8
);
master
->
dev
.
of_node
=
pdev
->
dev
.
of_node
;
err
=
spi_register_master
(
master
);
err
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
err
)
{
dev_err
(
&
pdev
->
dev
,
"register master failed: %d
\n
"
,
err
);
goto
fail
;
...
...
@@ -292,8 +292,6 @@ static int octeon_spi_remove(struct platform_device *pdev)
struct
octeon_spi
*
p
=
spi_master_get_devdata
(
master
);
u64
register_base
=
p
->
register_base
;
spi_unregister_master
(
master
);
/* Clear the CSENA* and put everything in a known state. */
cvmx_write_csr
(
register_base
+
OCTEON_SPI_CFG
,
0
);
...
...
drivers/spi/spi-omap-100k.c
View file @
52d85ebb
...
...
@@ -457,7 +457,7 @@ static int omap1_spi100k_probe(struct platform_device *pdev)
goto
err
;
}
status
=
spi_register_master
(
master
);
status
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
status
<
0
)
goto
err
;
...
...
@@ -485,8 +485,6 @@ static int omap1_spi100k_remove(struct platform_device *pdev)
r
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
spi_unregister_master
(
master
);
return
0
;
}
...
...
drivers/spi/spi-omap2-mcspi.c
View file @
52d85ebb
...
...
@@ -1413,7 +1413,7 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
if
(
status
<
0
)
goto
disable_pm
;
status
=
spi_register_master
(
master
);
status
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
status
<
0
)
goto
disable_pm
;
...
...
@@ -1441,7 +1441,6 @@ static int omap2_mcspi_remove(struct platform_device *pdev)
pm_runtime_put_sync
(
mcspi
->
dev
);
pm_runtime_disable
(
&
pdev
->
dev
);
spi_unregister_master
(
master
);
kfree
(
dma_channels
);
return
0
;
...
...
drivers/spi/spi-orion.c
View file @
52d85ebb
...
...
@@ -457,7 +457,7 @@ static int orion_spi_probe(struct platform_device *pdev)
goto
out_rel_clk
;
master
->
dev
.
of_node
=
pdev
->
dev
.
of_node
;
status
=
spi_register_master
(
master
);
status
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
status
<
0
)
goto
out_rel_clk
;
...
...
@@ -483,8 +483,6 @@ static int orion_spi_remove(struct platform_device *pdev)
clk_disable_unprepare
(
spi
->
clk
);
clk_put
(
spi
->
clk
);
spi_unregister_master
(
master
);
return
0
;
}
...
...
drivers/spi/spi-pl022.c
View file @
52d85ebb
...
...
@@ -1619,7 +1619,6 @@ static int verify_controller_parameters(struct pl022 *pl022,
dev_err
(
&
pl022
->
adev
->
dev
,
"RX FIFO Trigger Level is configured incorrectly
\n
"
);
return
-
EINVAL
;
break
;
}
switch
(
chip_info
->
tx_lev_trig
)
{
case
SSP_TX_1_OR_MORE_EMPTY_LOC
:
...
...
@@ -1645,7 +1644,6 @@ static int verify_controller_parameters(struct pl022 *pl022,
dev_err
(
&
pl022
->
adev
->
dev
,
"TX FIFO Trigger Level is configured incorrectly
\n
"
);
return
-
EINVAL
;
break
;
}
if
(
chip_info
->
iface
==
SSP_INTERFACE_NATIONAL_MICROWIRE
)
{
if
((
chip_info
->
ctrl_len
<
SSP_BITS_4
)
...
...
@@ -2227,7 +2225,7 @@ static int pl022_probe(struct amba_device *adev, const struct amba_id *id)
/* Register with the SPI framework */
amba_set_drvdata
(
adev
,
pl022
);
status
=
spi_register_master
(
master
);
status
=
devm_spi_register_master
(
&
adev
->
dev
,
master
);
if
(
status
!=
0
)
{
dev_err
(
&
adev
->
dev
,
"probe - problem registering spi master
\n
"
);
...
...
@@ -2287,8 +2285,6 @@ pl022_remove(struct amba_device *adev)
clk_unprepare
(
pl022
->
clk
);
amba_release_regions
(
adev
);
tasklet_disable
(
&
pl022
->
pump_transfers
);
spi_unregister_master
(
pl022
->
master
);
amba_set_drvdata
(
adev
,
NULL
);
return
0
;
}
...
...
drivers/spi/spi-pxa2xx.c
View file @
52d85ebb
...
...
@@ -1201,7 +1201,7 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
/* Register with the SPI framework */
platform_set_drvdata
(
pdev
,
drv_data
);
status
=
spi_register_master
(
master
);
status
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
status
!=
0
)
{
dev_err
(
&
pdev
->
dev
,
"problem registering spi master
\n
"
);
goto
out_error_clock_enabled
;
...
...
@@ -1253,9 +1253,6 @@ static int pxa2xx_spi_remove(struct platform_device *pdev)
/* Release SSP */
pxa_ssp_free
(
ssp
);
/* Disconnect from the SPI framework */
spi_unregister_master
(
drv_data
->
master
);
return
0
;
}
...
...
drivers/spi/spi-sh-hspi.c
View file @
52d85ebb
...
...
@@ -305,7 +305,7 @@ static int hspi_probe(struct platform_device *pdev)
master
->
mode_bits
=
SPI_CPOL
|
SPI_CPHA
;
master
->
auto_runtime_pm
=
true
;
master
->
transfer_one_message
=
hspi_transfer_one_message
;
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"spi_register_master error.
\n
"
);
goto
error1
;
...
...
@@ -328,7 +328,6 @@ static int hspi_remove(struct platform_device *pdev)
pm_runtime_disable
(
&
pdev
->
dev
);
clk_put
(
hspi
->
clk
);
spi_unregister_master
(
hspi
->
master
);
return
0
;
}
...
...
drivers/spi/spi-tegra114.c
View file @
52d85ebb
...
...
@@ -1115,7 +1115,7 @@ static int tegra_spi_probe(struct platform_device *pdev)
pm_runtime_put
(
&
pdev
->
dev
);
master
->
dev
.
of_node
=
pdev
->
dev
.
of_node
;
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"can not register to master err %d
\n
"
,
ret
);
goto
exit_pm_disable
;
...
...
@@ -1142,7 +1142,6 @@ static int tegra_spi_remove(struct platform_device *pdev)
struct
tegra_spi_data
*
tspi
=
spi_master_get_devdata
(
master
);
free_irq
(
tspi
->
irq
,
tspi
);
spi_unregister_master
(
master
);
if
(
tspi
->
tx_dma_chan
)
tegra_spi_deinit_dma_param
(
tspi
,
false
);
...
...
drivers/spi/spi-tegra20-sflash.c
View file @
52d85ebb
...
...
@@ -529,7 +529,7 @@ static int tegra_sflash_probe(struct platform_device *pdev)
pm_runtime_put
(
&
pdev
->
dev
);
master
->
dev
.
of_node
=
pdev
->
dev
.
of_node
;
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"can not register to master err %d
\n
"
,
ret
);
goto
exit_pm_disable
;
...
...
@@ -553,7 +553,6 @@ static int tegra_sflash_remove(struct platform_device *pdev)
struct
tegra_sflash_data
*
tsd
=
spi_master_get_devdata
(
master
);
free_irq
(
tsd
->
irq
,
tsd
);
spi_unregister_master
(
master
);
pm_runtime_disable
(
&
pdev
->
dev
);
if
(
!
pm_runtime_status_suspended
(
&
pdev
->
dev
))
...
...
drivers/spi/spi-tegra20-slink.c
View file @
52d85ebb
...
...
@@ -1164,7 +1164,7 @@ static int tegra_slink_probe(struct platform_device *pdev)
pm_runtime_put
(
&
pdev
->
dev
);
master
->
dev
.
of_node
=
pdev
->
dev
.
of_node
;
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
"can not register to master err %d
\n
"
,
ret
);
goto
exit_pm_disable
;
...
...
@@ -1191,7 +1191,6 @@ static int tegra_slink_remove(struct platform_device *pdev)
struct
tegra_slink_data
*
tspi
=
spi_master_get_devdata
(
master
);
free_irq
(
tspi
->
irq
,
tspi
);
spi_unregister_master
(
master
);
if
(
tspi
->
tx_dma_chan
)
tegra_slink_deinit_dma_param
(
tspi
,
false
);
...
...
drivers/spi/spi-ti-qspi.c
View file @
52d85ebb
...
...
@@ -532,7 +532,7 @@ static int ti_qspi_probe(struct platform_device *pdev)
if
(
!
of_property_read_u32
(
np
,
"spi-max-frequency"
,
&
max_freq
))
qspi
->
spi_max_frequency
=
max_freq
;
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
pdev
->
dev
,
master
);
if
(
ret
)
goto
free_master
;
...
...
@@ -543,22 +543,12 @@ static int ti_qspi_probe(struct platform_device *pdev)
return
ret
;
}
static
int
ti_qspi_remove
(
struct
platform_device
*
pdev
)
{
struct
ti_qspi
*
qspi
=
platform_get_drvdata
(
pdev
);
spi_unregister_master
(
qspi
->
master
);
return
0
;
}
static
const
struct
dev_pm_ops
ti_qspi_pm_ops
=
{
.
runtime_resume
=
ti_qspi_runtime_resume
,
};
static
struct
platform_driver
ti_qspi_driver
=
{
.
probe
=
ti_qspi_probe
,
.
remove
=
ti_qspi_remove
,
.
driver
=
{
.
name
=
"ti,dra7xxx-qspi"
,
.
owner
=
THIS_MODULE
,
...
...
drivers/spi/spi-txx9.c
View file @
52d85ebb
...
...
@@ -406,7 +406,7 @@ static int txx9spi_probe(struct platform_device *dev)
master
->
num_chipselect
=
(
u16
)
UINT_MAX
;
/* any GPIO numbers */
master
->
bits_per_word_mask
=
SPI_BPW_MASK
(
8
)
|
SPI_BPW_MASK
(
16
);
ret
=
spi_register_master
(
master
);
ret
=
devm_spi_register_master
(
&
dev
->
dev
,
master
);
if
(
ret
)
goto
exit
;
return
0
;
...
...
@@ -428,11 +428,9 @@ static int txx9spi_remove(struct platform_device *dev)
struct
spi_master
*
master
=
spi_master_get
(
platform_get_drvdata
(
dev
));
struct
txx9spi
*
c
=
spi_master_get_devdata
(
master
);
spi_unregister_master
(
master
);
destroy_workqueue
(
c
->
workqueue
);
clk_disable
(
c
->
clk
);
clk_put
(
c
->
clk
);
spi_master_put
(
master
);
return
0
;
}
...
...
drivers/spi/spi.c
View file @
52d85ebb
...
...
@@ -1245,6 +1245,41 @@ int spi_register_master(struct spi_master *master)
}
EXPORT_SYMBOL_GPL
(
spi_register_master
);
static
void
devm_spi_unregister
(
struct
device
*
dev
,
void
*
res
)
{
spi_unregister_master
(
*
(
struct
spi_master
**
)
res
);
}
/**
* dev_spi_register_master - register managed SPI master controller
* @dev: device managing SPI master
* @master: initialized master, originally from spi_alloc_master()
* Context: can sleep
*
* Register a SPI device as with spi_register_master() which will
* automatically be unregister
*/
int
devm_spi_register_master
(
struct
device
*
dev
,
struct
spi_master
*
master
)
{
struct
spi_master
**
ptr
;
int
ret
;
ptr
=
devres_alloc
(
devm_spi_unregister
,
sizeof
(
*
ptr
),
GFP_KERNEL
);
if
(
!
ptr
)
return
-
ENOMEM
;
ret
=
spi_register_master
(
master
);
if
(
ret
!=
0
)
{
*
ptr
=
master
;
devres_add
(
dev
,
ptr
);
}
else
{
devres_free
(
ptr
);
}
return
ret
;
}
EXPORT_SYMBOL_GPL
(
devm_spi_register_master
);
static
int
__unregister
(
struct
device
*
dev
,
void
*
null
)
{
spi_unregister_device
(
to_spi_device
(
dev
));
...
...
include/linux/spi/spi.h
View file @
52d85ebb
...
...
@@ -434,6 +434,8 @@ extern struct spi_master *
spi_alloc_master
(
struct
device
*
host
,
unsigned
size
);
extern
int
spi_register_master
(
struct
spi_master
*
master
);
extern
int
devm_spi_register_master
(
struct
device
*
dev
,
struct
spi_master
*
master
);
extern
void
spi_unregister_master
(
struct
spi_master
*
master
);
extern
struct
spi_master
*
spi_busnum_to_master
(
u16
busnum
);
...
...
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