mirror of
https://github.com/fail0verflow/sony-psvr-linux.git
synced 2025-05-04 01:09:02 -04:00
psvr 3.10
This commit is contained in:
parent
ec3a7a2e7c
commit
6081dd0618
6 changed files with 56 additions and 20 deletions
|
@ -56,6 +56,9 @@ static unsigned long sm_base;
|
|||
static unsigned long sm_asserted_watchdog_flag = 0;
|
||||
#define SM_ASSERTED_WATCHDOG_BIT (0)
|
||||
|
||||
typedef void (*wdt_cb_t)(void);
|
||||
static wdt_cb_t wdt_cb = NULL;
|
||||
|
||||
typedef union {
|
||||
unsigned int u32;
|
||||
struct w32smSysCtl_SM_CTRL;
|
||||
|
@ -356,8 +359,13 @@ static irqreturn_t bsm_intr(int irq, void *dev_id)
|
|||
|
||||
if(0xAEEDACD0 == readl(SOC_DTCM(SM_DTCM_ASSERTED_WATCHDOG))) {
|
||||
writel(0, SOC_DTCM(SM_DTCM_ASSERTED_WATCHDOG));
|
||||
if(!test_and_set_bit(SM_ASSERTED_WATCHDOG_BIT, &sm_asserted_watchdog_flag))
|
||||
panic("sm asserted watchdog!");
|
||||
if(!test_and_set_bit(SM_ASSERTED_WATCHDOG_BIT, &sm_asserted_watchdog_flag)) {
|
||||
if( wdt_cb ) {
|
||||
wdt_cb();
|
||||
} else {
|
||||
panic("sm asserted watchdog!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bsm_msg_dispatch();
|
||||
|
@ -680,6 +688,22 @@ int sm_get_ex_mem_size(void)
|
|||
}
|
||||
EXPORT_SYMBOL(sm_get_ex_mem_size);
|
||||
|
||||
int sm_register_wdt_callback( void (*cb_func)(void) )
|
||||
{
|
||||
if(cb_func) {
|
||||
wdt_cb = cb_func;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(sm_register_wdt_callback);
|
||||
|
||||
int sm_unregister_wdt_callback(void)
|
||||
{
|
||||
wdt_cb = NULL;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(sm_unregister_wdt_callback);
|
||||
|
||||
MODULE_AUTHOR("Marvell-Galois");
|
||||
MODULE_DESCRIPTION("System Manager Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
@ -1532,6 +1532,8 @@ static void regulator_ena_gpio_free(struct regulator_dev *rdev)
|
|||
gpio_free(pin->gpio);
|
||||
list_del(&pin->list);
|
||||
kfree(pin);
|
||||
rdev->ena_pin = NULL;
|
||||
return;
|
||||
} else {
|
||||
pin->request_count--;
|
||||
}
|
||||
|
|
|
@ -751,6 +751,20 @@ has_zeroout:
|
|||
int ret = check_block_validity(inode, map);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* Inodes with freshly allocated blocks where contents will be
|
||||
* visible after transaction commit must be on transaction's
|
||||
* ordered data list.
|
||||
*/
|
||||
if (map->m_flags & EXT4_MAP_NEW &&
|
||||
!(map->m_flags & EXT4_MAP_UNWRITTEN) &&
|
||||
!IS_NOQUOTA(inode) &&
|
||||
ext4_should_order_data(inode)) {
|
||||
ret = ext4_jbd2_file_inode(handle, inode);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
@ -1110,15 +1124,6 @@ static int ext4_write_end(struct file *file,
|
|||
int i_size_changed = 0;
|
||||
|
||||
trace_ext4_write_end(inode, pos, len, copied);
|
||||
if (ext4_test_inode_state(inode, EXT4_STATE_ORDERED_MODE)) {
|
||||
ret = ext4_jbd2_file_inode(handle, inode);
|
||||
if (ret) {
|
||||
unlock_page(page);
|
||||
page_cache_release(page);
|
||||
goto errout;
|
||||
}
|
||||
}
|
||||
|
||||
if (ext4_has_inline_data(inode)) {
|
||||
ret = ext4_write_inline_data_end(inode, pos, len,
|
||||
copied, page);
|
||||
|
|
|
@ -430,11 +430,6 @@ struct perf_event {
|
|||
#endif /* CONFIG_PERF_EVENTS */
|
||||
};
|
||||
|
||||
enum perf_event_context_type {
|
||||
task_context,
|
||||
cpu_context,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct perf_event_context - event context structure
|
||||
*
|
||||
|
@ -442,7 +437,6 @@ enum perf_event_context_type {
|
|||
*/
|
||||
struct perf_event_context {
|
||||
struct pmu *pmu;
|
||||
enum perf_event_context_type type;
|
||||
/*
|
||||
* Protect the states of the events in the list,
|
||||
* nr_active, and the list:
|
||||
|
|
|
@ -6187,7 +6187,6 @@ skip_type:
|
|||
__perf_event_init_context(&cpuctx->ctx);
|
||||
lockdep_set_class(&cpuctx->ctx.mutex, &cpuctx_mutex);
|
||||
lockdep_set_class(&cpuctx->ctx.lock, &cpuctx_lock);
|
||||
cpuctx->ctx.type = cpu_context;
|
||||
cpuctx->ctx.pmu = pmu;
|
||||
cpuctx->jiffies_interval = 1;
|
||||
INIT_LIST_HEAD(&cpuctx->rotation_list);
|
||||
|
@ -6794,7 +6793,19 @@ SYSCALL_DEFINE5(perf_event_open,
|
|||
* task or CPU context:
|
||||
*/
|
||||
if (move_group) {
|
||||
if (group_leader->ctx->type != ctx->type)
|
||||
/*
|
||||
* Make sure we're both on the same task, or both
|
||||
* per-cpu events.
|
||||
*/
|
||||
if (group_leader->ctx->task != ctx->task)
|
||||
goto err_context;
|
||||
|
||||
/*
|
||||
* Make sure we're both events for the same CPU;
|
||||
* grouping events for different CPUs is broken; since
|
||||
* you can never concurrently schedule them anyhow.
|
||||
*/
|
||||
if (group_leader->cpu != event->cpu)
|
||||
goto err_context;
|
||||
} else {
|
||||
if (group_leader->ctx != ctx)
|
||||
|
|
|
@ -1441,9 +1441,9 @@ static void em_print_info_external_detailed(unsigned long time, unsigned long na
|
|||
/* hook: off -> on */
|
||||
em_dump_vwrite_hook = em_vprintk_external;
|
||||
|
||||
em_dump_exception(0, NULL);
|
||||
em_dump_log(CONFIG_SNSC_EM_LOGFILE_LOG_MAX_LINES, NULL);
|
||||
em_dump_write(" [%6lu.%06lu] Exception happened\n", time, nanosec_rem / 1000);
|
||||
em_dump_exception(0, NULL);
|
||||
|
||||
/* hook: on -> off */
|
||||
em_dump_vwrite_hook = NULL;
|
||||
|
|
Loading…
Add table
Reference in a new issue