Merge tag 'driver-core-4.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core updates from Greg KH: "Here's the "big" driver core updates for 4.4-rc1. Primarily a bunch of debugfs updates, with a smattering of minor driver core fixes and updates as well. All have been in linux-next for a long time" * tag 'driver-core-4.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: debugfs: Add debugfs_create_ulong() of: to support binding numa node to specified device in devicetree debugfs: Add read-only/write-only bool file ops debugfs: Add read-only/write-only size_t file ops debugfs: Add read-only/write-only x64 file ops debugfs: Consolidate file mode checks in debugfs_create_*() Revert "mm: Check if section present during memory block (un)registering" driver-core: platform: Provide helpers for multi-driver modules mm: Check if section present during memory block (un)registering devres: fix a for loop bounds check CMA: fix CONFIG_CMA_SIZE_MBYTES overflow in 64bit base/platform: assert that dev_pm_domain callbacks are called unconditionally sysfs: correctly handle short reads on PREALLOC attrs. base: soc: siplify ida usage kobject: move EXPORT_SYMBOL() macros next to corresponding definitions kobject: explain what kobject's sd field is debugfs: document that debugfs_remove*() accepts NULL and error values debugfs: Pass bool pointer to debugfs_create_bool() ACPI / EC: Fix broken 64bit big-endian users of 'global_lock'
此提交包含在:
@@ -125,9 +125,9 @@ struct regmap {
|
||||
unsigned int num_reg_defaults_raw;
|
||||
|
||||
/* if set, only the cache is modified not the HW */
|
||||
u32 cache_only;
|
||||
bool cache_only;
|
||||
/* if set, only the HW is modified not the cache */
|
||||
u32 cache_bypass;
|
||||
bool cache_bypass;
|
||||
/* if set, remember to free reg_defaults_raw */
|
||||
bool cache_free;
|
||||
|
||||
@@ -135,7 +135,7 @@ struct regmap {
|
||||
const void *reg_defaults_raw;
|
||||
void *cache;
|
||||
/* if set, the cache contains newer data than the HW */
|
||||
u32 cache_dirty;
|
||||
bool cache_dirty;
|
||||
/* if set, the HW registers are known to match map->reg_defaults */
|
||||
bool no_sync_defaults;
|
||||
|
||||
|
@@ -355,9 +355,9 @@ static int regcache_lzo_sync(struct regmap *map, unsigned int min,
|
||||
if (ret > 0 && val == map->reg_defaults[ret].def)
|
||||
continue;
|
||||
|
||||
map->cache_bypass = 1;
|
||||
map->cache_bypass = true;
|
||||
ret = _regmap_write(map, i, val);
|
||||
map->cache_bypass = 0;
|
||||
map->cache_bypass = false;
|
||||
if (ret)
|
||||
return ret;
|
||||
dev_dbg(map->dev, "Synced register %#x, value %#x\n",
|
||||
|
@@ -54,11 +54,11 @@ static int regcache_hw_init(struct regmap *map)
|
||||
return -ENOMEM;
|
||||
|
||||
if (!map->reg_defaults_raw) {
|
||||
u32 cache_bypass = map->cache_bypass;
|
||||
bool cache_bypass = map->cache_bypass;
|
||||
dev_warn(map->dev, "No cache defaults, reading back from HW\n");
|
||||
|
||||
/* Bypass the cache access till data read from HW*/
|
||||
map->cache_bypass = 1;
|
||||
map->cache_bypass = true;
|
||||
tmp_buf = kmalloc(map->cache_size_raw, GFP_KERNEL);
|
||||
if (!tmp_buf) {
|
||||
ret = -ENOMEM;
|
||||
@@ -285,9 +285,9 @@ static int regcache_default_sync(struct regmap *map, unsigned int min,
|
||||
if (!regcache_reg_needs_sync(map, reg, val))
|
||||
continue;
|
||||
|
||||
map->cache_bypass = 1;
|
||||
map->cache_bypass = true;
|
||||
ret = _regmap_write(map, reg, val);
|
||||
map->cache_bypass = 0;
|
||||
map->cache_bypass = false;
|
||||
if (ret) {
|
||||
dev_err(map->dev, "Unable to sync register %#x. %d\n",
|
||||
reg, ret);
|
||||
@@ -315,7 +315,7 @@ int regcache_sync(struct regmap *map)
|
||||
int ret = 0;
|
||||
unsigned int i;
|
||||
const char *name;
|
||||
unsigned int bypass;
|
||||
bool bypass;
|
||||
|
||||
BUG_ON(!map->cache_ops);
|
||||
|
||||
@@ -333,7 +333,7 @@ int regcache_sync(struct regmap *map)
|
||||
map->async = true;
|
||||
|
||||
/* Apply any patch first */
|
||||
map->cache_bypass = 1;
|
||||
map->cache_bypass = true;
|
||||
for (i = 0; i < map->patch_regs; i++) {
|
||||
ret = _regmap_write(map, map->patch[i].reg, map->patch[i].def);
|
||||
if (ret != 0) {
|
||||
@@ -342,7 +342,7 @@ int regcache_sync(struct regmap *map)
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
map->cache_bypass = 0;
|
||||
map->cache_bypass = false;
|
||||
|
||||
if (map->cache_ops->sync)
|
||||
ret = map->cache_ops->sync(map, 0, map->max_register);
|
||||
@@ -384,7 +384,7 @@ int regcache_sync_region(struct regmap *map, unsigned int min,
|
||||
{
|
||||
int ret = 0;
|
||||
const char *name;
|
||||
unsigned int bypass;
|
||||
bool bypass;
|
||||
|
||||
BUG_ON(!map->cache_ops);
|
||||
|
||||
@@ -637,11 +637,11 @@ static int regcache_sync_block_single(struct regmap *map, void *block,
|
||||
if (!regcache_reg_needs_sync(map, regtmp, val))
|
||||
continue;
|
||||
|
||||
map->cache_bypass = 1;
|
||||
map->cache_bypass = true;
|
||||
|
||||
ret = _regmap_write(map, regtmp, val);
|
||||
|
||||
map->cache_bypass = 0;
|
||||
map->cache_bypass = false;
|
||||
if (ret != 0) {
|
||||
dev_err(map->dev, "Unable to sync register %#x. %d\n",
|
||||
regtmp, ret);
|
||||
@@ -668,14 +668,14 @@ static int regcache_sync_block_raw_flush(struct regmap *map, const void **data,
|
||||
dev_dbg(map->dev, "Writing %zu bytes for %d registers from 0x%x-0x%x\n",
|
||||
count * val_bytes, count, base, cur - map->reg_stride);
|
||||
|
||||
map->cache_bypass = 1;
|
||||
map->cache_bypass = true;
|
||||
|
||||
ret = _regmap_raw_write(map, base, *data, count * val_bytes);
|
||||
if (ret)
|
||||
dev_err(map->dev, "Unable to sync registers %#x-%#x. %d\n",
|
||||
base, cur - map->reg_stride, ret);
|
||||
|
||||
map->cache_bypass = 0;
|
||||
map->cache_bypass = false;
|
||||
|
||||
*data = NULL;
|
||||
|
||||
|
新增問題並參考
封鎖使用者