lkml.org 
[lkml]   [2010]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH] west bridge, device modules fixes
From
Date
This patch makes minor fixes to the device module for locking issues,
as well as some changes for the HAL/Kconfig changes made in a separate
patch. Please let me know if there are issues or concerns with this
patch.
Thanks,
David

Signed-off-by: David Cross <david.cross@cypress.com>

diff -uprN -X linux-next-vanilla/Documentation/dontdiff linux-next-vanilla/drivers/staging/westbridge/astoria/device/cyasdevice.c linux-next-incl-sdk/drivers/staging/westbridge/astoria/device/cyasdevice.c
--- linux-next-vanilla/drivers/staging/westbridge/astoria/device/cyasdevice.c 2010-08-31 19:32:51.000000000 -0700
+++ linux-next-incl-sdk/drivers/staging/westbridge/astoria/device/cyasdevice.c 2010-09-07 11:32:36.000000000 -0700
@@ -48,6 +48,8 @@ typedef struct cyasdevice {
cy_as_device_handle dev_handle;
/* Handle to the HAL */
cy_as_hal_device_tag hal_tag;
+ spinlock_t common_lock;
+ unsigned long flags;
} cyasdevice ;

/* global ptr to astoria device */
@@ -81,13 +83,19 @@ static void cyasdevice_deinit(cyasdevice

if (cy_as_dev->hal_tag) {

- #ifdef CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL
- if (stop_o_m_a_p_kernel(dev_handle_name,
+ #ifdef CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL
+ if (cy_as_hal_omap_pnand_stop(dev_handle_name,
cy_as_dev->hal_tag) != 0)
cy_as_hal_print_message("<1>_cy_as_device: stopping "
- "OMAP kernel HAL failed\n");
+ "OMAP PNAND HAL failed\n");
+ #endif

- #endif
+ #ifdef CONFIG_MACH_OMAP3_WESTBRIDGE_AST_CRAM_HAL
+ if (cy_as_hal_omap_cram_stop(dev_handle_name,
+ cy_as_dev->hal_tag) != 0)
+ cy_as_hal_print_message("<1>_cy_as_device: stopping "
+ "OMAP CRAM HAL failed\n");
+ #endif
}
cy_as_hal_print_message("<1>_cy_as_device:HAL layer stopped\n") ;

@@ -126,6 +134,28 @@ static void cy_misc_callback(cy_as_devic
}
}

+void cy_as_acquire_common_lock()
+{
+ /*printk("%s: lock address is 0x%x, is_locked=0x%x\n", __func__,
+ &cy_as_device_controller->common_lock,
+ spin_is_locked(&cy_as_device_controller->common_lock));*/
+ spin_lock_irqsave(&cy_as_device_controller->common_lock,
+ cy_as_device_controller->flags);/*
+ printk("%s: -- is_locked=0x%x\n", __func__,
+ spin_is_locked(&cy_as_device_controller->common_lock));*/
+}
+EXPORT_SYMBOL(cy_as_acquire_common_lock);
+
+void cy_as_release_common_lock()
+{
+ /*printk("%s: lock address is 0x%x, is_locked=0x%x\n", __func__,
+ &cy_as_device_controller->common_lock,
+ spin_is_locked(&cy_as_device_controller->common_lock));*/
+ spin_unlock_irqrestore(&cy_as_device_controller->common_lock,
+ cy_as_device_controller->flags);
+}
+EXPORT_SYMBOL(cy_as_release_common_lock);
+
/* reset astoria and reinit all regs */
#define PNAND_REG_CFG_INIT_VAL 0x0000
void hal_reset(cy_as_hal_device_tag tag)
@@ -209,17 +239,29 @@ static int cyasdevice_initialize(void)

/* Init the HAL & CyAsDeviceHandle */

- #ifdef CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL
- /* start OMAP HAL init instsnce */
+ #ifdef CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL
+ /* start OMAP HAL init instsnce */

- if (!start_o_m_a_p_kernel(dev_handle_name,
+ if (!cy_as_hal_omap_pnand_start(dev_handle_name,
&(cy_as_dev->hal_tag), cy_false)) {

cy_as_hal_print_message(
"<1>_cy_as_device: start OMAP34xx HAL failed\n") ;
goto done;
}
- #endif
+ #endif
+
+ #ifdef CONFIG_MACH_OMAP3_WESTBRIDGE_AST_CRAM_HAL
+ /* start OMAP HAL init instsnce */
+
+ if (!cy_as_hal_omap_cram_start(dev_handle_name,
+ &(cy_as_dev->hal_tag), cy_false)) {
+
+ cy_as_hal_print_message(
+ "<1>_cy_as_device: start OMAP34xx HAL failed\n") ;
+ goto done;
+ }
+ #endif

/* Now create the device */
if (cy_as_misc_create_device(&(cy_as_dev->dev_handle),
@@ -331,6 +373,8 @@ static int cyasdevice_initialize(void)
((ver_data.is_debug_mode) ? "debug" : "release"),
ver_data.major, ver_data.minor, ver_data.build, str) ;

+ spin_lock_init(&cy_as_dev->common_lock);
+
/* done now */
cy_as_device_controller = cy_as_dev ;


---------------------------------------------------------------
This message and any attachments may contain Cypress (or its
subsidiaries) confidential information. If it has been received
in error, please advise the sender and immediately delete this
message.
---------------------------------------------------------------


\
 
 \ /
  Last update: 2010-09-07 21:43    [W:0.054 / U:20.120 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site