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
nexedi
linux
Commits
ed893559
Commit
ed893559
authored
Jun 26, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'spi/topic/xilinx' into spi-next
parents
592cd34d
913b1966
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
11 deletions
+21
-11
drivers/mfd/timberdale.c
drivers/mfd/timberdale.c
+0
-1
drivers/spi/spi-xilinx.c
drivers/spi/spi-xilinx.c
+21
-9
include/linux/spi/xilinx_spi.h
include/linux/spi/xilinx_spi.h
+0
-1
No files found.
drivers/mfd/timberdale.c
View file @
ed893559
...
@@ -145,7 +145,6 @@ static struct spi_board_info timberdale_spi_8bit_board_info[] = {
...
@@ -145,7 +145,6 @@ static struct spi_board_info timberdale_spi_8bit_board_info[] = {
static
struct
xspi_platform_data
timberdale_xspi_platform_data
=
{
static
struct
xspi_platform_data
timberdale_xspi_platform_data
=
{
.
num_chipselect
=
3
,
.
num_chipselect
=
3
,
.
little_endian
=
true
,
/* bits per word and devices will be filled in runtime depending
/* bits per word and devices will be filled in runtime depending
* on the HW config
* on the HW config
*/
*/
...
...
drivers/spi/spi-xilinx.c
View file @
ed893559
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
*/
*/
#define XSPI_CR_OFFSET 0x60
/* Control Register */
#define XSPI_CR_OFFSET 0x60
/* Control Register */
#define XSPI_CR_LOOP 0x01
#define XSPI_CR_ENABLE 0x02
#define XSPI_CR_ENABLE 0x02
#define XSPI_CR_MASTER_MODE 0x04
#define XSPI_CR_MASTER_MODE 0x04
#define XSPI_CR_CPOL 0x08
#define XSPI_CR_CPOL 0x08
...
@@ -340,11 +341,12 @@ static const struct of_device_id xilinx_spi_of_match[] = {
...
@@ -340,11 +341,12 @@ static const struct of_device_id xilinx_spi_of_match[] = {
MODULE_DEVICE_TABLE
(
of
,
xilinx_spi_of_match
);
MODULE_DEVICE_TABLE
(
of
,
xilinx_spi_of_match
);
struct
spi_master
*
xilinx_spi_init
(
struct
device
*
dev
,
struct
resource
*
mem
,
struct
spi_master
*
xilinx_spi_init
(
struct
device
*
dev
,
struct
resource
*
mem
,
u32
irq
,
s16
bus_num
,
int
num_cs
,
int
little_endian
,
int
bits_per_word
)
u32
irq
,
s16
bus_num
,
int
num_cs
,
int
bits_per_word
)
{
{
struct
spi_master
*
master
;
struct
spi_master
*
master
;
struct
xilinx_spi
*
xspi
;
struct
xilinx_spi
*
xspi
;
int
ret
;
int
ret
;
u32
tmp
;
master
=
spi_alloc_master
(
dev
,
sizeof
(
struct
xilinx_spi
));
master
=
spi_alloc_master
(
dev
,
sizeof
(
struct
xilinx_spi
));
if
(
!
master
)
if
(
!
master
)
...
@@ -376,13 +378,25 @@ struct spi_master *xilinx_spi_init(struct device *dev, struct resource *mem,
...
@@ -376,13 +378,25 @@ struct spi_master *xilinx_spi_init(struct device *dev, struct resource *mem,
xspi
->
mem
=
*
mem
;
xspi
->
mem
=
*
mem
;
xspi
->
irq
=
irq
;
xspi
->
irq
=
irq
;
if
(
little_endian
)
{
xspi
->
read_fn
=
xspi_read32
;
/*
xspi
->
write_fn
=
xspi_write32
;
* Detect endianess on the IP via loop bit in CR. Detection
}
else
{
* must be done before reset is sent because incorrect reset
* value generates error interrupt.
* Setup little endian helper functions first and try to use them
* and check if bit was correctly setup or not.
*/
xspi
->
read_fn
=
xspi_read32
;
xspi
->
write_fn
=
xspi_write32
;
xspi
->
write_fn
(
XSPI_CR_LOOP
,
xspi
->
regs
+
XSPI_CR_OFFSET
);
tmp
=
xspi
->
read_fn
(
xspi
->
regs
+
XSPI_CR_OFFSET
);
tmp
&=
XSPI_CR_LOOP
;
if
(
tmp
!=
XSPI_CR_LOOP
)
{
xspi
->
read_fn
=
xspi_read32_be
;
xspi
->
read_fn
=
xspi_read32_be
;
xspi
->
write_fn
=
xspi_write32_be
;
xspi
->
write_fn
=
xspi_write32_be
;
}
}
xspi
->
bits_per_word
=
bits_per_word
;
xspi
->
bits_per_word
=
bits_per_word
;
if
(
xspi
->
bits_per_word
==
8
)
{
if
(
xspi
->
bits_per_word
==
8
)
{
xspi
->
tx_fn
=
xspi_tx8
;
xspi
->
tx_fn
=
xspi_tx8
;
...
@@ -446,14 +460,13 @@ static int xilinx_spi_probe(struct platform_device *dev)
...
@@ -446,14 +460,13 @@ static int xilinx_spi_probe(struct platform_device *dev)
{
{
struct
xspi_platform_data
*
pdata
;
struct
xspi_platform_data
*
pdata
;
struct
resource
*
r
;
struct
resource
*
r
;
int
irq
,
num_cs
=
0
,
little_endian
=
0
,
bits_per_word
=
8
;
int
irq
,
num_cs
=
0
,
bits_per_word
=
8
;
struct
spi_master
*
master
;
struct
spi_master
*
master
;
u8
i
;
u8
i
;
pdata
=
dev
->
dev
.
platform_data
;
pdata
=
dev
->
dev
.
platform_data
;
if
(
pdata
)
{
if
(
pdata
)
{
num_cs
=
pdata
->
num_chipselect
;
num_cs
=
pdata
->
num_chipselect
;
little_endian
=
pdata
->
little_endian
;
bits_per_word
=
pdata
->
bits_per_word
;
bits_per_word
=
pdata
->
bits_per_word
;
}
}
...
@@ -485,7 +498,7 @@ static int xilinx_spi_probe(struct platform_device *dev)
...
@@ -485,7 +498,7 @@ static int xilinx_spi_probe(struct platform_device *dev)
return
-
ENXIO
;
return
-
ENXIO
;
master
=
xilinx_spi_init
(
&
dev
->
dev
,
r
,
irq
,
dev
->
id
,
num_cs
,
master
=
xilinx_spi_init
(
&
dev
->
dev
,
r
,
irq
,
dev
->
id
,
num_cs
,
little_endian
,
bits_per_word
);
bits_per_word
);
if
(
!
master
)
if
(
!
master
)
return
-
ENODEV
;
return
-
ENODEV
;
...
@@ -501,7 +514,6 @@ static int xilinx_spi_probe(struct platform_device *dev)
...
@@ -501,7 +514,6 @@ static int xilinx_spi_probe(struct platform_device *dev)
static
int
xilinx_spi_remove
(
struct
platform_device
*
dev
)
static
int
xilinx_spi_remove
(
struct
platform_device
*
dev
)
{
{
xilinx_spi_deinit
(
platform_get_drvdata
(
dev
));
xilinx_spi_deinit
(
platform_get_drvdata
(
dev
));
platform_set_drvdata
(
dev
,
0
);
return
0
;
return
0
;
}
}
...
...
include/linux/spi/xilinx_spi.h
View file @
ed893559
...
@@ -11,7 +11,6 @@
...
@@ -11,7 +11,6 @@
*/
*/
struct
xspi_platform_data
{
struct
xspi_platform_data
{
u16
num_chipselect
;
u16
num_chipselect
;
bool
little_endian
;
u8
bits_per_word
;
u8
bits_per_word
;
struct
spi_board_info
*
devices
;
struct
spi_board_info
*
devices
;
u8
num_devices
;
u8
num_devices
;
...
...
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