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
c5fa44d1
Commit
c5fa44d1
authored
Jun 13, 2013
by
Samuel Ortiz
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-mfd-next' of
git://git.linaro.org/people/ljones/linux-3.0-ux500
parents
734f935a
aaaab422
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
77 additions
and
46 deletions
+77
-46
drivers/mfd/88pm860x-core.c
drivers/mfd/88pm860x-core.c
+1
-2
drivers/mfd/aat2870-core.c
drivers/mfd/aat2870-core.c
+3
-2
drivers/mfd/ab3100-core.c
drivers/mfd/ab3100-core.c
+10
-18
drivers/mfd/ab8500-core.c
drivers/mfd/ab8500-core.c
+58
-21
drivers/mfd/ab8500-debugfs.c
drivers/mfd/ab8500-debugfs.c
+1
-1
drivers/mfd/dbx500-prcmu-regs.h
drivers/mfd/dbx500-prcmu-regs.h
+2
-2
include/linux/mfd/abx500/ab8500.h
include/linux/mfd/abx500/ab8500.h
+2
-0
No files found.
drivers/mfd/88pm860x-core.c
View file @
c5fa44d1
...
...
@@ -1155,7 +1155,7 @@ static int pm860x_probe(struct i2c_client *client,
return
-
ENOMEM
;
chip
->
id
=
verify_addr
(
client
);
chip
->
regmap
=
regmap_init_i2c
(
client
,
&
pm860x_regmap_config
);
chip
->
regmap
=
devm_
regmap_init_i2c
(
client
,
&
pm860x_regmap_config
);
if
(
IS_ERR
(
chip
->
regmap
))
{
ret
=
PTR_ERR
(
chip
->
regmap
);
dev_err
(
&
client
->
dev
,
"Failed to allocate register map: %d
\n
"
,
...
...
@@ -1203,7 +1203,6 @@ static int pm860x_remove(struct i2c_client *client)
regmap_exit
(
chip
->
regmap_companion
);
i2c_unregister_device
(
chip
->
companion
);
}
regmap_exit
(
chip
->
regmap
);
kfree
(
chip
);
return
0
;
}
...
...
drivers/mfd/aat2870-core.c
View file @
c5fa44d1
...
...
@@ -312,8 +312,9 @@ static ssize_t aat2870_reg_write_file(struct file *file,
while
(
*
start
==
' '
)
start
++
;
if
(
strict_strtoul
(
start
,
16
,
&
val
))
return
-
EINVAL
;
ret
=
kstrtoul
(
start
,
16
,
&
val
);
if
(
ret
)
return
ret
;
ret
=
aat2870
->
write
(
aat2870
,
(
u8
)
addr
,
(
u8
)
val
);
if
(
ret
)
...
...
drivers/mfd/ab3100-core.c
View file @
c5fa44d1
...
...
@@ -491,7 +491,7 @@ static ssize_t ab3100_get_set_reg(struct file *file,
char
buf
[
32
];
ssize_t
buf_size
;
int
regp
;
u
nsigned
long
user_reg
;
u
8
user_reg
;
int
err
;
int
i
=
0
;
...
...
@@ -514,34 +514,29 @@ static ssize_t ab3100_get_set_reg(struct file *file,
/*
* Advance pointer to end of string then terminate
* the register string. This is needed to satisfy
* the
strict_strtoul
() function.
* the
kstrtou8
() function.
*/
while
((
i
<
buf_size
)
&&
(
buf
[
i
]
!=
' '
))
i
++
;
buf
[
i
]
=
'\0'
;
err
=
strict_strtoul
(
&
buf
[
regp
],
16
,
&
user_reg
);
err
=
kstrtou8
(
&
buf
[
regp
],
16
,
&
user_reg
);
if
(
err
)
return
err
;
if
(
user_reg
>
0xff
)
return
-
EINVAL
;
/* Either we read or we write a register here */
if
(
!
priv
->
mode
)
{
/* Reading */
u8
reg
=
(
u8
)
user_reg
;
u8
regvalue
;
ab3100_get_register_interruptible
(
ab3100
,
reg
,
&
regvalue
);
ab3100_get_register_interruptible
(
ab3100
,
user_
reg
,
&
regvalue
);
dev_info
(
ab3100
->
dev
,
"debug read AB3100 reg[0x%02x]: 0x%02x
\n
"
,
reg
,
regvalue
);
user_
reg
,
regvalue
);
}
else
{
int
valp
;
unsigned
long
user_value
;
u8
reg
=
(
u8
)
user_reg
;
u8
value
;
u8
user_value
;
u8
regvalue
;
/*
...
...
@@ -557,20 +552,17 @@ static ssize_t ab3100_get_set_reg(struct file *file,
i
++
;
buf
[
i
]
=
'\0'
;
err
=
strict_strtoul
(
&
buf
[
valp
],
16
,
&
user_value
);
err
=
kstrtou8
(
&
buf
[
valp
],
16
,
&
user_value
);
if
(
err
)
return
err
;
if
(
user_reg
>
0xff
)
return
-
EINVAL
;
value
=
(
u8
)
user_value
;
ab3100_set_register_interruptible
(
ab3100
,
reg
,
value
);
ab3100_get_register_interruptible
(
ab3100
,
reg
,
&
regvalue
);
ab3100_set_register_interruptible
(
ab3100
,
user_reg
,
user_value
);
ab3100_get_register_interruptible
(
ab3100
,
user_reg
,
&
regvalue
);
dev_info
(
ab3100
->
dev
,
"debug write reg[0x%02x] with 0x%02x, "
"after readback: 0x%02x
\n
"
,
reg
,
value
,
regvalue
);
user_reg
,
user_
value
,
regvalue
);
}
return
buf_size
;
}
...
...
drivers/mfd/ab8500-core.c
View file @
c5fa44d1
...
...
@@ -650,6 +650,21 @@ static struct resource ab8500_rtc_resources[] = {
},
};
static
struct
resource
ab8540_rtc_resources
[]
=
{
{
.
name
=
"1S"
,
.
start
=
AB8540_INT_RTC_1S
,
.
end
=
AB8540_INT_RTC_1S
,
.
flags
=
IORESOURCE_IRQ
,
},
{
.
name
=
"ALARM"
,
.
start
=
AB8500_INT_RTC_ALARM
,
.
end
=
AB8500_INT_RTC_ALARM
,
.
flags
=
IORESOURCE_IRQ
,
},
};
static
struct
resource
ab8500_poweronkey_db_resources
[]
=
{
{
.
name
=
"ONKEY_DBF"
,
...
...
@@ -1050,6 +1065,10 @@ static struct mfd_cell ab8500_devs[] = {
.
name
=
"ab8500-sysctrl"
,
.
of_compatible
=
"stericsson,ab8500-sysctrl"
,
},
{
.
name
=
"ab8500-ext-regulator"
,
.
of_compatible
=
"stericsson,ab8500-ext-regulator"
,
},
{
.
name
=
"ab8500-regulator"
,
.
of_compatible
=
"stericsson,ab8500-regulator"
,
...
...
@@ -1098,10 +1117,6 @@ static struct mfd_cell ab8500_devs[] = {
.
of_compatible
=
"stericsson,ab8500-pwm"
,
.
id
=
3
,
},
{
.
name
=
"ab8500-leds"
,
.
of_compatible
=
"stericsson,ab8500-leds"
,
},
{
.
name
=
"ab8500-denc"
,
.
of_compatible
=
"stericsson,ab8500-denc"
,
...
...
@@ -1124,6 +1139,7 @@ static struct mfd_cell ab8500_devs[] = {
},
{
.
name
=
"ab8500-codec"
,
.
of_compatible
=
"stericsson,ab8500-codec"
,
},
};
...
...
@@ -1138,6 +1154,9 @@ static struct mfd_cell ab9540_devs[] = {
{
.
name
=
"ab8500-sysctrl"
,
},
{
.
name
=
"ab8500-ext-regulator"
,
},
{
.
name
=
"ab8500-regulator"
,
},
...
...
@@ -1170,9 +1189,6 @@ static struct mfd_cell ab9540_devs[] = {
.
name
=
"ab8500-pwm"
,
.
id
=
1
,
},
{
.
name
=
"ab8500-leds"
,
},
{
.
name
=
"abx500-temp"
,
.
num_resources
=
ARRAY_SIZE
(
ab8500_temp_resources
),
...
...
@@ -1241,9 +1257,6 @@ static struct mfd_cell ab8505_devs[] = {
.
name
=
"ab8500-pwm"
,
.
id
=
1
,
},
{
.
name
=
"ab8500-leds"
,
},
{
.
name
=
"pinctrl-ab8505"
,
},
...
...
@@ -1273,6 +1286,9 @@ static struct mfd_cell ab8540_devs[] = {
{
.
name
=
"ab8500-sysctrl"
,
},
{
.
name
=
"ab8500-ext-regulator"
,
},
{
.
name
=
"ab8500-regulator"
,
},
...
...
@@ -1286,11 +1302,6 @@ static struct mfd_cell ab8540_devs[] = {
.
num_resources
=
ARRAY_SIZE
(
ab8505_gpadc_resources
),
.
resources
=
ab8505_gpadc_resources
,
},
{
.
name
=
"ab8500-rtc"
,
.
num_resources
=
ARRAY_SIZE
(
ab8500_rtc_resources
),
.
resources
=
ab8500_rtc_resources
,
},
{
.
name
=
"ab8500-acc-det"
,
.
num_resources
=
ARRAY_SIZE
(
ab8500_av_acc_detect_resources
),
...
...
@@ -1305,9 +1316,6 @@ static struct mfd_cell ab8540_devs[] = {
.
name
=
"ab8500-pwm"
,
.
id
=
1
,
},
{
.
name
=
"ab8500-leds"
,
},
{
.
name
=
"abx500-temp"
,
.
num_resources
=
ARRAY_SIZE
(
ab8500_temp_resources
),
...
...
@@ -1331,6 +1339,24 @@ static struct mfd_cell ab8540_devs[] = {
},
};
static
struct
mfd_cell
ab8540_cut1_devs
[]
=
{
{
.
name
=
"ab8500-rtc"
,
.
of_compatible
=
"stericsson,ab8500-rtc"
,
.
num_resources
=
ARRAY_SIZE
(
ab8500_rtc_resources
),
.
resources
=
ab8500_rtc_resources
,
},
};
static
struct
mfd_cell
ab8540_cut2_devs
[]
=
{
{
.
name
=
"ab8540-rtc"
,
.
of_compatible
=
"stericsson,ab8540-rtc"
,
.
num_resources
=
ARRAY_SIZE
(
ab8540_rtc_resources
),
.
resources
=
ab8540_rtc_resources
,
},
};
static
ssize_t
show_chip_id
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
...
...
@@ -1734,11 +1760,22 @@ static int ab8500_probe(struct platform_device *pdev)
ret
=
mfd_add_devices
(
ab8500
->
dev
,
0
,
ab9540_devs
,
ARRAY_SIZE
(
ab9540_devs
),
NULL
,
ab8500
->
irq_base
,
ab8500
->
domain
);
else
if
(
is_ab8540
(
ab8500
))
else
if
(
is_ab8540
(
ab8500
))
{
ret
=
mfd_add_devices
(
ab8500
->
dev
,
0
,
ab8540_devs
,
ARRAY_SIZE
(
ab8540_devs
),
NULL
,
ab8500
->
irq_base
,
ab8500
->
domain
);
else
if
(
is_ab8505
(
ab8500
))
ab8500
->
irq_base
,
NULL
);
if
(
ret
)
return
ret
;
if
(
is_ab8540_1p2_or_earlier
(
ab8500
))
ret
=
mfd_add_devices
(
ab8500
->
dev
,
0
,
ab8540_cut1_devs
,
ARRAY_SIZE
(
ab8540_cut1_devs
),
NULL
,
ab8500
->
irq_base
,
NULL
);
else
/* ab8540 >= cut2 */
ret
=
mfd_add_devices
(
ab8500
->
dev
,
0
,
ab8540_cut2_devs
,
ARRAY_SIZE
(
ab8540_cut2_devs
),
NULL
,
ab8500
->
irq_base
,
NULL
);
}
else
if
(
is_ab8505
(
ab8500
))
ret
=
mfd_add_devices
(
ab8500
->
dev
,
0
,
ab8505_devs
,
ARRAY_SIZE
(
ab8505_devs
),
NULL
,
ab8500
->
irq_base
,
ab8500
->
domain
);
...
...
drivers/mfd/ab8500-debugfs.c
View file @
c5fa44d1
...
...
@@ -2757,7 +2757,7 @@ static ssize_t show_irq(struct device *dev,
unsigned
int
irq_index
;
int
err
;
err
=
strict_
strtoul
(
attr
->
attr
.
name
,
0
,
&
name
);
err
=
k
strtoul
(
attr
->
attr
.
name
,
0
,
&
name
);
if
(
err
)
return
err
;
...
...
drivers/mfd/dbx500-prcmu-regs.h
View file @
c5fa44d1
...
...
@@ -16,8 +16,8 @@
#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end))
#define PRCM_ACLK_MGT (0x004)
#define PRCM_SVA
CLK_MGT
(0x008)
#define PRCM_SIA
CLK_MGT
(0x00C)
#define PRCM_SVA
MMCSPCLK_MGT
(0x008)
#define PRCM_SIA
MMDSPCLK_MGT
(0x00C)
#define PRCM_SGACLK_MGT (0x014)
#define PRCM_UARTCLK_MGT (0x018)
#define PRCM_MSP02CLK_MGT (0x01C)
...
...
include/linux/mfd/abx500/ab8500.h
View file @
c5fa44d1
...
...
@@ -291,6 +291,8 @@ enum ab8500_version {
#define AB8540_INT_FSYNC2R 213
#define AB8540_INT_BITCLK2F 214
#define AB8540_INT_BITCLK2R 215
/* ab8540_irq_regoffset[27] -> IT[Source|Latch|Mask]33 */
#define AB8540_INT_RTC_1S 216
/*
* AB8500_AB9540_NR_IRQS is used when configuring the IRQ numbers for the
...
...
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