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
35ed78a0
Commit
35ed78a0
authored
Oct 30, 2017
by
Ulf Hansson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'omap_hsmmc' into next
parents
0b07194b
ddde0e7d
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
668 additions
and
28 deletions
+668
-28
Documentation/devicetree/bindings/mmc/sdhci-omap.txt
Documentation/devicetree/bindings/mmc/sdhci-omap.txt
+16
-0
MAINTAINERS
MAINTAINERS
+6
-0
drivers/mmc/host/Kconfig
drivers/mmc/host/Kconfig
+12
-0
drivers/mmc/host/Makefile
drivers/mmc/host/Makefile
+1
-0
drivers/mmc/host/omap_hsmmc.c
drivers/mmc/host/omap_hsmmc.c
+8
-25
drivers/mmc/host/sdhci-omap.c
drivers/mmc/host/sdhci-omap.c
+607
-0
drivers/regulator/pbias-regulator.c
drivers/regulator/pbias-regulator.c
+18
-3
No files found.
Documentation/devicetree/bindings/mmc/sdhci-omap.txt
0 → 100644
View file @
35ed78a0
* TI OMAP SDHCI Controller
Refer to mmc.txt for standard MMC bindings.
Required properties:
- compatible: Should be "ti,dra7-sdhci" for DRA7 and DRA72 controllers
- ti,hwmods: Must be "mmc<n>", <n> is controller instance starting 1
Example:
mmc1: mmc@4809c000 {
compatible = "ti,dra7-sdhci";
reg = <0x4809c000 0x400>;
ti,hwmods = "mmc1";
bus-width = <4>;
vmmc-supply = <&vmmc>; /* phandle to regulator node */
};
MAINTAINERS
View file @
35ed78a0
...
...
@@ -12049,6 +12049,12 @@ L: linux-mmc@vger.kernel.org
S: Maintained
F: drivers/mmc/host/sdhci-spear.c
SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) TI OMAP DRIVER
M: Kishon Vijay Abraham I <kishon@ti.com>
L: linux-mmc@vger.kernel.org
S: Maintained
F: drivers/mmc/host/sdhci-omap.c
SECURE ENCRYPTING DEVICE (SED) OPAL DRIVER
M: Scott Bauer <scott.bauer@intel.com>
M: Jonathan Derrick <jonathan.derrick@intel.com>
...
...
drivers/mmc/host/Kconfig
View file @
35ed78a0
...
...
@@ -899,3 +899,15 @@ config MMC_SDHCI_XENON
This selects Marvell Xenon eMMC/SD/SDIO SDHCI.
If you have a controller with this interface, say Y or M here.
If unsure, say N.
config MMC_SDHCI_OMAP
tristate "TI SDHCI Controller Support"
depends on MMC_SDHCI_PLTFM && OF
help
This selects the Secure Digital Host Controller Interface (SDHCI)
support present in TI's DRA7 SOCs. The controller supports
SD/MMC/SDIO devices.
If you have a controller with this interface, say Y or M here.
If unsure, say N.
drivers/mmc/host/Makefile
View file @
35ed78a0
...
...
@@ -89,6 +89,7 @@ obj-$(CONFIG_MMC_SDHCI_MSM) += sdhci-msm.o
obj-$(CONFIG_MMC_SDHCI_ST)
+=
sdhci-st.o
obj-$(CONFIG_MMC_SDHCI_MICROCHIP_PIC32)
+=
sdhci-pic32.o
obj-$(CONFIG_MMC_SDHCI_BRCMSTB)
+=
sdhci-brcmstb.o
obj-$(CONFIG_MMC_SDHCI_OMAP)
+=
sdhci-omap.o
ifeq
($(CONFIG_CB710_DEBUG),y)
CFLAGS-cb710-mmc
+=
-DDEBUG
...
...
drivers/mmc/host/omap_hsmmc.c
View file @
35ed78a0
...
...
@@ -147,10 +147,6 @@
#define OMAP_MMC_MAX_CLOCK 52000000
#define DRIVER_NAME "omap_hsmmc"
#define VDD_1V8 1800000
/* 180000 uV */
#define VDD_3V0 3000000
/* 300000 uV */
#define VDD_165_195 (ffs(MMC_VDD_165_195) - 1)
/*
* One controller can have multiple slots, like on some omap boards using
* omap.c controller driver. Luckily this is not currently done on any known
...
...
@@ -308,8 +304,7 @@ static int omap_hsmmc_disable_supply(struct mmc_host *mmc)
return
ret
;
}
static
int
omap_hsmmc_set_pbias
(
struct
omap_hsmmc_host
*
host
,
bool
power_on
,
int
vdd
)
static
int
omap_hsmmc_set_pbias
(
struct
omap_hsmmc_host
*
host
,
bool
power_on
)
{
int
ret
;
...
...
@@ -317,17 +312,6 @@ static int omap_hsmmc_set_pbias(struct omap_hsmmc_host *host, bool power_on,
return
0
;
if
(
power_on
)
{
if
(
vdd
<=
VDD_165_195
)
ret
=
regulator_set_voltage
(
host
->
pbias
,
VDD_1V8
,
VDD_1V8
);
else
ret
=
regulator_set_voltage
(
host
->
pbias
,
VDD_3V0
,
VDD_3V0
);
if
(
ret
<
0
)
{
dev_err
(
host
->
dev
,
"pbias set voltage fail
\n
"
);
return
ret
;
}
if
(
host
->
pbias_enabled
==
0
)
{
ret
=
regulator_enable
(
host
->
pbias
);
if
(
ret
)
{
...
...
@@ -350,8 +334,7 @@ static int omap_hsmmc_set_pbias(struct omap_hsmmc_host *host, bool power_on,
return
0
;
}
static
int
omap_hsmmc_set_power
(
struct
omap_hsmmc_host
*
host
,
int
power_on
,
int
vdd
)
static
int
omap_hsmmc_set_power
(
struct
omap_hsmmc_host
*
host
,
int
power_on
)
{
struct
mmc_host
*
mmc
=
host
->
mmc
;
int
ret
=
0
;
...
...
@@ -363,7 +346,7 @@ static int omap_hsmmc_set_power(struct omap_hsmmc_host *host, int power_on,
if
(
IS_ERR
(
mmc
->
supply
.
vmmc
))
return
0
;
ret
=
omap_hsmmc_set_pbias
(
host
,
false
,
0
);
ret
=
omap_hsmmc_set_pbias
(
host
,
false
);
if
(
ret
)
return
ret
;
...
...
@@ -385,7 +368,7 @@ static int omap_hsmmc_set_power(struct omap_hsmmc_host *host, int power_on,
if
(
ret
)
return
ret
;
ret
=
omap_hsmmc_set_pbias
(
host
,
true
,
vdd
);
ret
=
omap_hsmmc_set_pbias
(
host
,
true
);
if
(
ret
)
goto
err_set_voltage
;
}
else
{
...
...
@@ -1220,11 +1203,11 @@ static int omap_hsmmc_switch_opcond(struct omap_hsmmc_host *host, int vdd)
clk_disable_unprepare
(
host
->
dbclk
);
/* Turn the power off */
ret
=
omap_hsmmc_set_power
(
host
,
0
,
0
);
ret
=
omap_hsmmc_set_power
(
host
,
0
);
/* Turn the power ON with given VDD 1.8 or 3.0v */
if
(
!
ret
)
ret
=
omap_hsmmc_set_power
(
host
,
1
,
vdd
);
ret
=
omap_hsmmc_set_power
(
host
,
1
);
if
(
host
->
dbclk
)
clk_prepare_enable
(
host
->
dbclk
);
...
...
@@ -1621,10 +1604,10 @@ static void omap_hsmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
if
(
ios
->
power_mode
!=
host
->
power_mode
)
{
switch
(
ios
->
power_mode
)
{
case
MMC_POWER_OFF
:
omap_hsmmc_set_power
(
host
,
0
,
0
);
omap_hsmmc_set_power
(
host
,
0
);
break
;
case
MMC_POWER_UP
:
omap_hsmmc_set_power
(
host
,
1
,
ios
->
vdd
);
omap_hsmmc_set_power
(
host
,
1
);
break
;
case
MMC_POWER_ON
:
do_send_init_stream
=
1
;
...
...
drivers/mmc/host/sdhci-omap.c
0 → 100644
View file @
35ed78a0
This diff is collapsed.
Click to expand it.
drivers/regulator/pbias-regulator.c
View file @
35ed78a0
...
...
@@ -34,6 +34,8 @@ struct pbias_reg_info {
u32
vmode
;
unsigned
int
enable_time
;
char
*
name
;
const
unsigned
int
*
pbias_volt_table
;
int
n_voltages
;
};
struct
pbias_regulator_data
{
...
...
@@ -49,11 +51,16 @@ struct pbias_of_data {
unsigned
int
offset
;
};
static
const
unsigned
int
pbias_volt_table
[]
=
{
static
const
unsigned
int
pbias_volt_table
_3_0V
[]
=
{
1800000
,
3000000
};
static
const
unsigned
int
pbias_volt_table_3_3V
[]
=
{
1800000
,
3300000
};
static
const
struct
regulator_ops
pbias_regulator_voltage_ops
=
{
.
list_voltage
=
regulator_list_voltage_table
,
.
get_voltage_sel
=
regulator_get_voltage_sel_regmap
,
...
...
@@ -69,6 +76,8 @@ static const struct pbias_reg_info pbias_mmc_omap2430 = {
.
vmode
=
BIT
(
0
),
.
disable_val
=
0
,
.
enable_time
=
100
,
.
pbias_volt_table
=
pbias_volt_table_3_0V
,
.
n_voltages
=
2
,
.
name
=
"pbias_mmc_omap2430"
};
...
...
@@ -77,6 +86,8 @@ static const struct pbias_reg_info pbias_sim_omap3 = {
.
enable_mask
=
BIT
(
9
),
.
vmode
=
BIT
(
8
),
.
enable_time
=
100
,
.
pbias_volt_table
=
pbias_volt_table_3_0V
,
.
n_voltages
=
2
,
.
name
=
"pbias_sim_omap3"
};
...
...
@@ -86,6 +97,8 @@ static const struct pbias_reg_info pbias_mmc_omap4 = {
.
disable_val
=
BIT
(
25
),
.
vmode
=
BIT
(
21
),
.
enable_time
=
100
,
.
pbias_volt_table
=
pbias_volt_table_3_0V
,
.
n_voltages
=
2
,
.
name
=
"pbias_mmc_omap4"
};
...
...
@@ -95,6 +108,8 @@ static const struct pbias_reg_info pbias_mmc_omap5 = {
.
disable_val
=
BIT
(
25
),
.
vmode
=
BIT
(
21
),
.
enable_time
=
100
,
.
pbias_volt_table
=
pbias_volt_table_3_3V
,
.
n_voltages
=
2
,
.
name
=
"pbias_mmc_omap5"
};
...
...
@@ -199,8 +214,8 @@ static int pbias_regulator_probe(struct platform_device *pdev)
drvdata
[
data_idx
].
desc
.
owner
=
THIS_MODULE
;
drvdata
[
data_idx
].
desc
.
type
=
REGULATOR_VOLTAGE
;
drvdata
[
data_idx
].
desc
.
ops
=
&
pbias_regulator_voltage_ops
;
drvdata
[
data_idx
].
desc
.
volt_table
=
pbias_volt_table
;
drvdata
[
data_idx
].
desc
.
n_voltages
=
2
;
drvdata
[
data_idx
].
desc
.
volt_table
=
info
->
pbias_volt_table
;
drvdata
[
data_idx
].
desc
.
n_voltages
=
info
->
n_voltages
;
drvdata
[
data_idx
].
desc
.
enable_time
=
info
->
enable_time
;
drvdata
[
data_idx
].
desc
.
vsel_reg
=
offset
;
drvdata
[
data_idx
].
desc
.
vsel_mask
=
info
->
vmode
;
...
...
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