Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 205741
b: refs/heads/master
c: 6a88a4f
h: refs/heads/master
i:
  205739: b7776ac
v: v3
  • Loading branch information
Omar Ramirez Luna authored and Greg Kroah-Hartman committed Jun 23, 2010
1 parent 7e3c648 commit 47706f7
Show file tree
Hide file tree
Showing 5 changed files with 458 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7227b671f7dd2f0d0c7cc700b184f0cdf5d6ee65
refs/heads/master: 6a88a4fe0937325f1fc3df835f3e9b1698992899
253 changes: 253 additions & 0 deletions trunk/drivers/staging/tidspbridge/services/cfg.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
/*
* cfg.c
*
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
*
* Implementation of platform specific config services.
*
* Copyright (C) 2005-2006 Texas Instruments, Inc.
*
* This package is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/

/* ----------------------------------- DSP/BIOS Bridge */
#include <dspbridge/std.h>
#include <dspbridge/dbdefs.h>

/* ----------------------------------- Trace & Debug */
#include <dspbridge/dbc.h>

/* ----------------------------------- OS Adaptation Layer */

/* ----------------------------------- This */
#include <dspbridge/cfg.h>
#include <dspbridge/drv.h>

struct drv_ext {
struct list_head link;
char sz_string[MAXREGPATHLENGTH];
};

/*
* ======== cfg_exit ========
* Purpose:
* Discontinue usage of the CFG module.
*/
void cfg_exit(void)
{
/* Do nothing */
}

/*
* ======== cfg_get_auto_start ========
* Purpose:
* Retreive the autostart mask, if any, for this board.
*/
int cfg_get_auto_start(struct cfg_devnode *dev_node_obj,
OUT u32 *pdwAutoStart)
{
int status = 0;
u32 dw_buf_size;
struct drv_data *drv_datap = dev_get_drvdata(bridge);

dw_buf_size = sizeof(*pdwAutoStart);
if (!dev_node_obj)
status = -EFAULT;
if (!pdwAutoStart || !drv_datap)
status = -EFAULT;
if (DSP_SUCCEEDED(status))
*pdwAutoStart = (drv_datap->base_img) ? 1 : 0;

DBC_ENSURE((status == 0 &&
(*pdwAutoStart == 0 || *pdwAutoStart == 1))
|| status != 0);
return status;
}

/*
* ======== cfg_get_dev_object ========
* Purpose:
* Retrieve the Device Object handle for a given devnode.
*/
int cfg_get_dev_object(struct cfg_devnode *dev_node_obj,
OUT u32 *pdwValue)
{
int status = 0;
u32 dw_buf_size;
struct drv_data *drv_datap = dev_get_drvdata(bridge);

if (!drv_datap)
status = -EPERM;

if (!dev_node_obj)
status = -EFAULT;

if (!pdwValue)
status = -EFAULT;

dw_buf_size = sizeof(pdwValue);
if (DSP_SUCCEEDED(status)) {

/* check the device string and then store dev object */
if (!
(strcmp
((char *)((struct drv_ext *)dev_node_obj)->sz_string,
"TIOMAP1510")))
*pdwValue = (u32)drv_datap->dev_object;
}
if (DSP_FAILED(status))
pr_err("%s: Failed, status 0x%x\n", __func__, status);
return status;
}

/*
* ======== cfg_get_exec_file ========
* Purpose:
* Retreive the default executable, if any, for this board.
*/
int cfg_get_exec_file(struct cfg_devnode *dev_node_obj, u32 ul_buf_size,
OUT char *pstrExecFile)
{
int status = 0;
struct drv_data *drv_datap = dev_get_drvdata(bridge);

if (!dev_node_obj)
status = -EFAULT;

else if (!pstrExecFile || !drv_datap)
status = -EFAULT;

if (strlen(drv_datap->base_img) > ul_buf_size)
status = -EINVAL;

if (DSP_SUCCEEDED(status) && drv_datap->base_img)
strcpy(pstrExecFile, drv_datap->base_img);

if (DSP_FAILED(status))
pr_err("%s: Failed, status 0x%x\n", __func__, status);
DBC_ENSURE(((status == 0) &&
(strlen(pstrExecFile) <= ul_buf_size))
|| (status != 0));
return status;
}

/*
* ======== cfg_get_object ========
* Purpose:
* Retrieve the Object handle from the Registry
*/
int cfg_get_object(OUT u32 *pdwValue, u8 dw_type)
{
int status = -EINVAL;
struct drv_data *drv_datap = dev_get_drvdata(bridge);

DBC_REQUIRE(pdwValue != NULL);

if (!drv_datap)
return -EPERM;

switch (dw_type) {
case (REG_DRV_OBJECT):
if (drv_datap->drv_object) {
*pdwValue = (u32)drv_datap->drv_object;
status = 0;
} else {
status = -ENODATA;
}
break;
case (REG_MGR_OBJECT):
if (drv_datap->mgr_object) {
*pdwValue = (u32)drv_datap->mgr_object;
status = 0;
} else {
status = -ENODATA;
}
break;

default:
break;
}
if (DSP_FAILED(status)) {
*pdwValue = 0;
pr_err("%s: Failed, status 0x%x\n", __func__, status);
}
DBC_ENSURE((DSP_SUCCEEDED(status) && *pdwValue != 0) ||
(DSP_FAILED(status) && *pdwValue == 0));
return status;
}

/*
* ======== cfg_init ========
* Purpose:
* Initialize the CFG module's private state.
*/
bool cfg_init(void)
{
return true;
}

/*
* ======== cfg_set_dev_object ========
* Purpose:
* Store the Device Object handle and dev_node pointer for a given devnode.
*/
int cfg_set_dev_object(struct cfg_devnode *dev_node_obj, u32 dwValue)
{
int status = 0;
struct drv_data *drv_datap = dev_get_drvdata(bridge);

if (!drv_datap) {
pr_err("%s: Failed, status 0x%x\n", __func__, status);
return -EPERM;
}

if (!dev_node_obj)
status = -EFAULT;

if (DSP_SUCCEEDED(status)) {
/* Store the Bridge device object in the Registry */

if (!(strcmp((char *)dev_node_obj, "TIOMAP1510")))
drv_datap->dev_object = (void *) dwValue;
}
if (DSP_FAILED(status))
pr_err("%s: Failed, status 0x%x\n", __func__, status);

return status;
}

/*
* ======== cfg_set_object ========
* Purpose:
* Store the Driver Object handle
*/
int cfg_set_object(u32 dwValue, u8 dw_type)
{
int status = -EINVAL;
struct drv_data *drv_datap = dev_get_drvdata(bridge);

if (!drv_datap)
return -EPERM;

switch (dw_type) {
case (REG_DRV_OBJECT):
drv_datap->drv_object = (void *)dwValue;
status = 0;
break;
case (REG_MGR_OBJECT):
drv_datap->mgr_object = (void *)dwValue;
status = 0;
break;
default:
break;
}
if (DSP_FAILED(status))
pr_err("%s: Failed, status 0x%x\n", __func__, status);
return status;
}
31 changes: 31 additions & 0 deletions trunk/drivers/staging/tidspbridge/services/ntfy.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* ntfy.c
*
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
*
* Manage lists of notification events.
*
* Copyright (C) 2005-2006 Texas Instruments, Inc.
*
* This package is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/

/* ----------------------------------- This */
#include <dspbridge/ntfy.h>

int dsp_notifier_event(struct notifier_block *this, unsigned long event,
void *data)
{
struct ntfy_event *ne = container_of(this, struct ntfy_event,
noti_block);
if (ne->event & event)
sync_set_event(&ne->sync_obj);
return NOTIFY_OK;
}

69 changes: 69 additions & 0 deletions trunk/drivers/staging/tidspbridge/services/services.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* services.c
*
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
*
* Provide SERVICES loading.
*
* Copyright (C) 2005-2006 Texas Instruments, Inc.
*
* This package is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/

#include <dspbridge/host_os.h>

/* ----------------------------------- DSP/BIOS Bridge */
#include <dspbridge/std.h>
#include <dspbridge/dbdefs.h>

/* ----------------------------------- Trace & Debug */
#include <dspbridge/dbc.h>

/* ----------------------------------- OS Adaptation Layer */
#include <dspbridge/cfg.h>
#include <dspbridge/ntfy.h>
#include <dspbridge/sync.h>
#include <dspbridge/clk.h>

/* ----------------------------------- This */
#include <dspbridge/services.h>

/*
* ======== services_exit ========
* Purpose:
* Discontinue usage of module; free resources when reference count
* reaches 0.
*/
void services_exit(void)
{
cfg_exit();
}

/*
* ======== services_init ========
* Purpose:
* Initializes SERVICES modules.
*/
bool services_init(void)
{
bool ret = true;
bool fcfg;

/* Perform required initialization of SERVICES modules. */
fcfg = cfg_init();

ret = fcfg;

if (!ret) {
if (fcfg)
cfg_exit();
}

return ret;
}
Loading

0 comments on commit 47706f7

Please sign in to comment.