commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=a3af3ec79d2929b71f43608aea1989472bb95bd6
branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk

Signed-off-by: Steven Miao <[email protected]>
---
 arch/blackfin/Makefile              |    6 ++--
 arch/blackfin/boot/Makefile         |   14 +++++-----
 drivers/staging/icc/core/protocol.c |   49 ++++++++++++----------------------
 drivers/staging/icc/include/icc.h   |    8 +++++
 4 files changed, 35 insertions(+), 42 deletions(-)

diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
index 66cf000..1fce086 100644
--- a/arch/blackfin/Makefile
+++ b/arch/blackfin/Makefile
@@ -141,11 +141,11 @@ archclean:
 
 INSTALL_PATH ?= /tftpboot
 boot := arch/$(ARCH)/boot
-BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.lzo vmImage.xip
+BOOT_TARGETS = uImage uImage.bin uImage.bz2 uImage.gz uImage.lzma uImage.lzo uImage.xip
 PHONY += $(BOOT_TARGETS) install
-KBUILD_IMAGE := $(boot)/vmImage
+KBUILD_IMAGE := $(boot)/uImage
 
-all: vmImage
+all: uImage
 
 $(BOOT_TARGETS): vmlinux
 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile
index f7d27d5..6314a03 100644
--- a/arch/blackfin/boot/Makefile
+++ b/arch/blackfin/boot/Makefile
@@ -39,22 +39,22 @@ quiet_cmd_mk_bin_xip = BIN     $@
 $(obj)/vmlinux.bin.xip: $(obj)/vmlinux.bin FORCE
 	$(call if_changed,mk_bin_xip)
 
-$(obj)/vmImage.bin: $(obj)/vmlinux.bin
+$(obj)/uImage.bin: $(obj)/vmlinux.bin
 	$(call if_changed,uimage,none)
 
-$(obj)/vmImage.bz2: $(obj)/vmlinux.bin.bz2
+$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2
 	$(call if_changed,uimage,bzip2)
 
-$(obj)/vmImage.gz: $(obj)/vmlinux.bin.gz
+$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz
 	$(call if_changed,uimage,gzip)
 
-$(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma
+$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma
 	$(call if_changed,uimage,lzma)
 
-$(obj)/vmImage.lzo: $(obj)/vmlinux.bin.lzo
+$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo
 	$(call if_changed,uimage,lzo)
 
-$(obj)/vmImage.xip: $(obj)/vmlinux.bin.xip
+$(obj)/uImage.xip: $(obj)/vmlinux.bin.xip
 	$(call if_changed,uimage,none)
 
 suffix-y                      := bin
@@ -64,7 +64,7 @@ suffix-$(CONFIG_KERNEL_LZMA)  := lzma
 suffix-$(CONFIG_KERNEL_LZO)   := lzo
 suffix-$(CONFIG_ROMKERNEL)    := xip
 
-$(obj)/vmImage: $(obj)/vmImage.$(suffix-y)
+$(obj)/uImage: $(obj)/uImage.$(suffix-y)
 	@ln -sf $(notdir $<) $@
 
 install:
diff --git a/drivers/staging/icc/core/protocol.c b/drivers/staging/icc/core/protocol.c
index dea4a17..563b42e 100644
--- a/drivers/staging/icc/core/protocol.c
+++ b/drivers/staging/icc/core/protocol.c
@@ -24,6 +24,7 @@
 #include <asm/cacheflush.h>
 #include <asm/icc.h>
 #include <asm/dma.h>
+#include <asm/portmux.h>
 
 #define DRIVER_NAME "icc"
 
@@ -1243,38 +1244,24 @@ int icc_request_dev_name(const char *name, struct platform_device **saved_pdev)
 	return 0;
 }
 
-int res_manage_request_peri(uint16_t subid)
+int res_manage_request_peri(resources_t *data)
 {
-	int ret;
-	struct platform_device *pdev;
-	if (icc_peri_array[subid].pdev)
-		return -EBUSY;
+	unsigned short *peri_list = (unsigned short *)data->resources_array;
+	char resource_name[32] = "coreb-";
 
-	ret = icc_request_dev_name(icc_peri_array[subid].name, &pdev);
-	if (ret) {
-		/* not managed by linux, coreb can use it */
-		return 0;
-	}
+	strcat(resource_name, data->label);
 
-	if (pdev->dev.driver) {
-		/* already bound with driver */
-		return -EBUSY;
-	}
+	if (peripheral_request_list(peri_list, resource_name))
+		sm_debug("Requesting Peripherals %s failed\n", resource_name);
 
-	platform_device_unregister(pdev);
-	icc_peri_array[subid].resource_id = subid;
-	icc_peri_array[subid].pdev = pdev;
 	return 0;
 }
 
-void res_manage_free_peri(uint16_t subid)
+void res_manage_free_peri(resources_t *data)
 {
-	struct platform_device *pdev = icc_peri_array[subid].pdev;
-	if (!pdev)
-		return;
-	platform_device_add(pdev);
-	icc_peri_array[subid].resource_id = 0;
-	icc_peri_array[subid].pdev = NULL;
+	unsigned short *peri_list = (unsigned short *)data->resources_array;
+
+	peripheral_free_list(peri_list);
 }
 
 int res_manage_request_gpio(uint16_t subid)
@@ -1312,7 +1299,7 @@ void res_manage_free_dma(uint16_t subid)
 	free_dma(subid);
 }
 
-int res_manage_request(uint16_t id)
+int res_manage_request(uint16_t id, resources_t *data)
 {
 	int ret = 0;
 	uint16_t type, subid;
@@ -1321,7 +1308,7 @@ int res_manage_request(uint16_t id)
 	sm_debug("%s %x %x\n", __func__, type, subid);
 	switch (type) {
 	case RESMGR_TYPE_PERIPHERAL:
-		ret = res_manage_request_peri(subid);
+		ret = res_manage_request_peri(data);
 		break;
 	case RESMGR_TYPE_GPIO:
 		ret = res_manage_request_gpio(subid);
@@ -1338,7 +1325,7 @@ int res_manage_request(uint16_t id)
 	return ret;
 }
 
-int res_manage_free(uint16_t id)
+int res_manage_free(uint16_t id, resources_t *data)
 {
 	int ret = 0;
 	uint16_t type, subid;
@@ -1346,7 +1333,7 @@ int res_manage_free(uint16_t id)
 	subid = RESMGR_SUBID(id);
 	switch (type) {
 	case RESMGR_TYPE_PERIPHERAL:
-		res_manage_free_peri(subid);
+		res_manage_free_peri(data);
 		break;
 	case RESMGR_TYPE_GPIO:
 		res_manage_free_gpio(subid);
@@ -1633,11 +1620,9 @@ static int sm_resouce_manage_recvmsg(struct sm_msg *msg, struct sm_session *sess
 	struct sm_icc_desc *icc_info = get_icc_peer(msg);
 	BUG_ON(!icc_info);
 
-	sm_debug("%s msg type %x\n", __func__, (uint32_t)msg->type);
 	switch (msg->type) {
 	case SM_RES_MGR_REQUEST:
-		sm_debug("%s free %x\n", __func__, (uint32_t)msg->payload);
-		ret = res_manage_request((uint16_t)msg->payload);
+		ret = res_manage_request((uint16_t)msg->payload, (resources_t *)msg->length);
 		if (ret)
 			sm_send_control_msg(session, msg->src_ep, icc_info->peer_cpu, 0,
 					0, SM_RES_MGR_REQUEST_FAIL);
@@ -1647,7 +1632,7 @@ static int sm_resouce_manage_recvmsg(struct sm_msg *msg, struct sm_session *sess
 
 		break;
 	case SM_RES_MGR_FREE:
-		res_manage_free((uint16_t)msg->payload);
+		res_manage_free((uint16_t)msg->payload, (resources_t *)msg->length);
 		sm_send_control_msg(session, msg->src_ep, icc_info->peer_cpu, 0,
 					0, SM_RES_MGR_FREE_DONE);
 		break;
diff --git a/drivers/staging/icc/include/icc.h b/drivers/staging/icc/include/icc.h
index 5cb9f62..1f9b2b4 100644
--- a/drivers/staging/icc/include/icc.h
+++ b/drivers/staging/icc/include/icc.h
@@ -57,6 +57,7 @@ enum {
 	RESMGR_TYPE_MAX,
 };
 
+
 #define EP_RESMGR_SERVICE 0
 
 #define RES_TYPE_OFFSET  12
@@ -289,6 +290,13 @@ struct sm_packet {
 	void *param;
 };
 
+typedef struct {
+	char label[32];				/* owner name */
+	uint16_t count;				/* resource number in next array */
+	uint32_t resources_array;		/* address of the resource ID array */
+} resources_t;
+
+
 #define SM_SCALAR_CMD(x) ((x) >> 16 & 0xffff)
 #define SM_SCALAR_CMDARG(x) ((x) & 0xffff)
 #define SM_SCALAR_CMD_HEAD 0xFE
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to