示例#1
0
static struct net_device *vnet_add_dev(void *priv)
{
	int ret;
	struct net_device *dev;

   DPRINTK(2, "BEGIN\n");
   
	dev = alloc_netdev(0, "pdp%d", vnet_setup);
	if (dev == NULL) {
		EPRINTK("out of memory\n");
		return NULL;
	}
	dev->ml_priv		= priv;

	ret = register_netdev(dev);

	if (ret != 0) {
		EPRINTK("register_netdevice failed: %d\n", ret);
		kfree(dev);
		return NULL;
	}

   DPRINTK(2, "END\n");
	return dev;
}
示例#2
0
static int publish_frontend_name(struct xenbus_device *dev)
{
	struct xenbus_transaction tr;
	int err;
	
	/* Publish the name of the frontend driver */
	do {
		err = xenbus_transaction_start(&tr);
		if (err != 0) { 
			EPRINTK("%s: transaction start failed\n", __FUNCTION__);
			return err;
		}
		err = xenbus_printf(tr, dev->nodename, "accel-frontend", 
				    "%s", frontend_name);
		if (err != 0) {
			EPRINTK("%s: xenbus_printf failed\n", __FUNCTION__);
			xenbus_transaction_end(tr, 1);
			return err;
		}
		err = xenbus_transaction_end(tr, 0);
	} while (err == -EAGAIN);
	
	if (err != 0) {
		EPRINTK("failed to end frontend name transaction\n");
		return err;
	}
	return 0;
}
static int mddi_auo_lcd_on(struct platform_device *pdev)
{
	EPRINTK("%s: started.\n", __func__);

#if defined(CONFIG_MACH_MSM7X27_GELATO)
	if (system_state == SYSTEM_BOOTING && mddi_auo_pdata->initialized) {
		is_lcd_on = TRUE;
#if defined(CONFIG_FB_MSM_MDDI_24BIT)
		EPRINTK("%s: mddi_auo_initialize_24bit.\n", __func__);
		auo_display_table(mddi_auo_initialize_24bit, sizeof(mddi_auo_initialize_24bit)/sizeof(struct display_table));
#endif
		return 0;
	}
#endif

	// LCD HW Reset
	mddi_auo_lcd_panel_poweron();

#if defined(CONFIG_MACH_MSM7X27_THUNDERC) || defined(CONFIG_MACH_MSM7X27_GELATO)
#if defined(CONFIG_FB_MSM_MDDI_24BIT)
	auo_display_table(mddi_auo_initialize_24bit_full, sizeof(mddi_auo_initialize_24bit_full)/sizeof(struct display_table));
#else
	auo_display_table(mddi_auo_initialize_20110330, sizeof(mddi_auo_initialize_20110330)/sizeof(struct display_table));
#endif
	auo_display_table(mddi_auo_display_on, sizeof(mddi_auo_display_on) / sizeof(struct display_table));
#endif

	is_lcd_on = TRUE;
	return 0;
}
示例#4
0
static 
int vnic_process_rx_msg(netfront_accel_vnic *vnic,
			struct net_accel_msg *msg)
{
	int err;

	switch (msg->id) {
	case NET_ACCEL_MSG_HELLO:
		/* Hello, reply with Reply */
		DPRINTK("got Hello, with version %.8x\n",
			msg->u.hello.version);
		BUG_ON(vnic->msg_state != NETFRONT_ACCEL_MSG_NONE);
		err = vnic_process_hello_msg(vnic, msg);
		if (err == 0)
			vnic->msg_state = NETFRONT_ACCEL_MSG_HELLO;
		break;
	case NET_ACCEL_MSG_SETHW:
		/* Hardware info message */
		DPRINTK("got H/W info\n");
		BUG_ON(vnic->msg_state != NETFRONT_ACCEL_MSG_HELLO);
		err = netfront_accel_vi_init(vnic, &msg->u.hw);
		if (err == 0)
			vnic->msg_state = NETFRONT_ACCEL_MSG_HW;
		break;
	case NET_ACCEL_MSG_MAPBUF | NET_ACCEL_MSG_REPLY:
		VPRINTK("Got mapped buffers back\n");
		BUG_ON(vnic->msg_state != NETFRONT_ACCEL_MSG_HW);
		err = vnic_add_bufs(vnic, msg);
		break;
	case NET_ACCEL_MSG_MAPBUF | NET_ACCEL_MSG_REPLY | NET_ACCEL_MSG_ERROR:
		/* No buffers.  Can't use the fast path. */
		EPRINTK("Got mapped buffers error.  Cannot accelerate.\n");
		BUG_ON(vnic->msg_state != NETFRONT_ACCEL_MSG_HW);
		err = -EIO;
		break;
	case NET_ACCEL_MSG_LOCALMAC:
		/* Should be add, remove not currently used */
		EPRINTK_ON(!(msg->u.localmac.flags & NET_ACCEL_MSG_ADD));
		BUG_ON(vnic->msg_state != NETFRONT_ACCEL_MSG_HW);
		err = vnic_process_localmac_msg(vnic, msg);
		break;
	default:
		EPRINTK("Huh? Message code is 0x%x\n", msg->id);
		err = -EPROTO;
		break;
	}

	return err;
}
示例#5
0
static int pdp_deactivate(pdp_arg_t *pdp_arg, int force)
{
	struct pdp_info *dev = NULL;
  
   DPRINTK(2, "BEGIN\n");
	DPRINTK(1, "id: %d\n", pdp_arg->id);

	
	if (pdp_arg->id == 1) {
		DPRINTK(1, "Channel ID is 1, we will remove the network device (pdp) of channel ID: %d.\n",
				pdp_arg->id + g_adjust);
	}

	else {
		DPRINTK(1, "Channel ID: %d\n", pdp_arg->id);
	}

	pdp_arg->id = pdp_arg->id + g_adjust;
	DPRINTK(1, "ID is adjusted, new ID: %d\n", pdp_arg->id);

	dev = pdp_get_dev(pdp_arg->id);

	if (dev == NULL) {
		EPRINTK(1, "not found id: %u\n", pdp_arg->id);
		return -EINVAL;
	}
	if (!force && dev->flags & DEV_FLAG_STICKY) {
		EPRINTK(1, "sticky id: %u\n", pdp_arg->id);
		return -EACCES;
	}

	pdp_remove_dev(pdp_arg->id);
	
	if (dev->type == DEV_TYPE_NET) {
		DPRINTK(1, "%s(id: %u) network device removed\n", 
			dev->vn_dev.net->name, dev->id);
		vnet_del_dev(dev->vn_dev.net);
	} else if (dev->type == DEV_TYPE_SERIAL) {
		struct tty_driver * tty_driver = get_tty_driver_by_id(dev);

		DPRINTK(1, "%s(id: %u) serial device removed\n",
				tty_driver->name, dev->id);
		vs_del_dev(dev);
	}
	kfree(dev);
   DPRINTK(2, "END\n");
	return 0;
}
void display_table(struct display_table *table, unsigned int count)
{
	unsigned int i;

    for(i = 0; i < count; i++) {
		
        unsigned reg;
        reg = table[i].reg;
		
        switch (reg) {
			
            case REGFLAG_DELAY :
                msleep(table[i].count);
				        EPRINTK("%s() : delay %d msec\n", __func__, table[i].count);
                break;
				
            case REGFLAG_END_OF_TABLE :
                break;
				
            default:
                mddi_host_register_cmds_write32(reg, table[i].count, table[i].val_list, 1, 0, 0);
                //EPRINTK("%s: reg : 0x%04X, val : 0x%04X\n", __func__, reg, table[i].val_list[0]);
       	}
    }
	
}
示例#7
0
static inline int dpram_flush_rx(struct file *filp, size_t count)
{
	int ret, n = 0;
	char *buf;
	mm_segment_t oldfs;

   DPRINTK(2, "BEGIN\n");

	buf = kmalloc(count, GFP_KERNEL);
	if (buf == NULL) return -ENOMEM;

	while (count) {
      dpram_filp->f_flags |= O_NONBLOCK;
		oldfs = get_fs(); set_fs(get_ds());
		ret = filp->f_op->read(filp, buf + n, count, &filp->f_pos);
		set_fs(oldfs);
      dpram_filp->f_flags &= ~O_NONBLOCK;
		if (ret < 0) {
			if (ret == -EAGAIN) continue;
			EPRINTK("f_op->read() failed: %d\n", ret);
			kfree(buf);
			return ret;
		}
		n += ret;
		count -= ret;
	}
	kfree(buf);
   DPRINTK(2, "END\n");
	return n;
}
示例#8
0
static inline int dpram_read(struct file *filp, void *buf, size_t count)
{
	int ret, n = 0;
	mm_segment_t oldfs;

   DPRINTK(2, "BEGIN\n");

	while (count) {
      dpram_filp->f_flags |= O_NONBLOCK;
		oldfs = get_fs(); set_fs(get_ds());
		ret = filp->f_op->read(filp, buf + n, count, &filp->f_pos);
		set_fs(oldfs);
      dpram_filp->f_flags &= ~O_NONBLOCK;

      if (ret < 0) {
			if (ret == -EAGAIN) {
				continue;
			}
			EPRINTK("f_op->read() failed: %d\n", ret);
			return ret;
		}
		n += ret;
		count -= ret;
      DPRINTK(3, "ret : %d, count : %d", ret, count);
	}
   DPRINTK(2, "END\n");
	return n;
}
示例#9
0
static void compare_table(struct display_table *table, unsigned int count)
{
	unsigned int i;

    for(i = 0; i < count; i++) {
		
        unsigned reg;
        reg = table[i].reg;
		
        switch (reg) {
			
            case REGFLAG_DELAY :              
                break;
				
            case REGFLAG_END_OF_TABLE :
                break;
				
            default:
                mddi_host_register_cmds_write8(reg, table[i].count, table[i].val_list, 0, 0, 0);
//				if(table[i].val_list != temp)
					
				EPRINTK("%s: reg : %x, val : %x.\n", __func__, reg, table[i].val_list[0]);
       	}
    }	
}
示例#10
0
static inline int dpram_write(struct file *filp, const void *buf, size_t count,
			      int nonblock)
{
	int ret, n = 0;
	mm_segment_t oldfs;

   DPRINTK(2, "BEGIN\n");

	while (count) {
		if (!dpram_filp) {
			DPRINTK(1, "DPRAM not available\n");
			return -ENODEV;
	   }

      dpram_filp->f_flags |= O_NONBLOCK;
      oldfs = get_fs(); set_fs(get_ds());
	   ret = filp->f_op->write(filp, buf + n, count, &filp->f_pos);
	   set_fs(oldfs);
      dpram_filp->f_flags &= ~O_NONBLOCK;

      if (ret < 0) {
         if (ret == -EAGAIN){
            continue;
         }
         EPRINTK("f_op->write() failed: %d\n", ret);
			return ret;
		}
		n += ret;
		count -= ret;
	}
   DPRINTK(2, "END\n");
	return n;
}
示例#11
0
static int vnet_recv(struct pdp_info *dev, size_t len,int net_id)
{
	struct sk_buff *skb;
	int ret;

   DPRINTK(2, "BEGIN\n");

	/* @LDK@ for multiple pdp.. , ex) email & streaming.. by hobac. */
	if (!dev) {
		return 0;
	}

	if (!netif_running(dev->vn_dev.net)) {
		EPRINTK("%s(id: %u) is not running\n", 
			dev->vn_dev.net->name, dev->id);
		return -ENODEV;
	}

	skb = alloc_skb(len, GFP_KERNEL);

	if (skb == NULL) {
		EPRINTK("alloc_skb() failed\n");
		return -ENOMEM;
	}
	ret = dpram_read(dpram_filp, skb->data, len);

	if (ret < 0) {
		EPRINTK("dpram_read() failed: %d\n", ret);
		dev_kfree_skb_any(skb);
		return ret;
	}

	skb_put(skb, ret);

	skb->dev = dev->vn_dev.net;
	skb->protocol = __constant_htons(ETH_P_IP);

	netif_rx(skb);

	dev->vn_dev.stats.rx_packets++;
	dev->vn_dev.stats.rx_bytes += skb->len;

   DPRINTK(2, "END\n");
	return 0;
}
示例#12
0
static int mddi_hitachi_lcd_on(struct platform_device *pdev)
{
	EPRINTK("%s: started.\n", __func__);

#if defined(CONFIG_MACH_MSM7X27_THUNDERG) || defined(CONFIG_MACH_MSM7X27_THUNDERC) || defined(CONFIG_MACH_MSM7X27_THUNDERA)
	if (system_state == SYSTEM_BOOTING && mddi_hitachi_pdata->initialized) {
		hitachi_workaround();
		is_lcd_on = TRUE;
		return 0;
	}
#endif
	// LCD HW Reset
	mddi_hitachi_lcd_panel_poweron();
#if defined(CONFIG_MACH_MSM7X27_THUNDERG)
	if (lge_bd_rev <= LGE_REV_E) {
		EPRINTK("ThunderG ==> lge_bd_rev = %d : 1st LCD initial\n", lge_bd_rev);
		display_table(mddi_hitachi_initialize_1st, sizeof(mddi_hitachi_initialize_1st)/sizeof(struct display_table));
		display_table(mddi_hitachi_display_on_1st, sizeof(mddi_hitachi_display_on_1st) / sizeof(struct display_table));
	} else {
		EPRINTK("ThunderG ==> lge_bd_rev = %d : 3rd LCD initial\n", lge_bd_rev);
		display_table(mddi_hitachi_initialize_3rd_p500, sizeof(mddi_hitachi_initialize_3rd_p500)/sizeof(struct display_table));
		display_table(mddi_hitachi_display_on_3rd, sizeof(mddi_hitachi_display_on_3rd) / sizeof(struct display_table));
	}
#elif defined(CONFIG_MACH_MSM7X27_THUNDERA)
	display_table(mddi_hitachi_initialize_1st, 
			sizeof(mddi_hitachi_initialize_1st)/sizeof(struct display_table));
	display_table(mddi_hitachi_display_on_1st,
			sizeof(mddi_hitachi_display_on_1st) / sizeof(struct display_table));
#else
	if (lge_bd_rev <= LGE_REV_D) {
		EPRINTK("ThunderC ==> lge_bd_rev = %d : 1st LCD initial\n", lge_bd_rev);
		display_table(mddi_hitachi_initialize_1st, sizeof(mddi_hitachi_initialize_1st)/sizeof(struct display_table));
		display_table(mddi_hitachi_display_on_1st, sizeof(mddi_hitachi_display_on_1st) / sizeof(struct display_table));
	} else {
		EPRINTK("ThunderC ==> lge_bd_rev = %d : 3rd LCD initial\n", lge_bd_rev);
		display_table(mddi_hitachi_initialize_3rd_vs660, sizeof(mddi_hitachi_initialize_3rd_vs660)/sizeof(struct display_table));
		display_table(mddi_hitachi_display_on_3rd, sizeof(mddi_hitachi_display_on_3rd) / sizeof(struct display_table));
	}
#endif
	is_lcd_on = TRUE;
	return 0;
}
示例#13
0
/* Shutdown remote domain that is misbehaving */
int net_accel_shutdown_remote(int domain)
{
    struct sched_remote_shutdown sched_shutdown = {
        .domain_id = domain,
        .reason = SHUTDOWN_crash
    };

    EPRINTK("Crashing domain %d\n", domain);

    return HYPERVISOR_sched_op(SCHEDOP_remote_shutdown, &sched_shutdown);
}
示例#14
0
int net_accel_ungrant_page(grant_ref_t gntref)
{
    if (unlikely(gnttab_query_foreign_access(gntref) != 0)) {
        EPRINTK("%s: remote domain still using grant %d\n", __FUNCTION__,
                gntref);
        return -EBUSY;
    }

    gnttab_end_foreign_access(gntref, 0);
    return 0;
}
示例#15
0
/* Name        : icp_ocfDrvFreeLACSession
 *
 * Description : This attempts to deregister a LAC session. If it fails, the
 * deregistation retry function is called.
 */
int icp_ocfDrvFreeLACSession(icp_device_t dev, uint64_t sid)
{
	CpaCySymSessionCtx sessionToDeregister = NULL;
	struct icp_drvSessionData *sessionData = NULL;
	CpaStatus lacStatus = CPA_STATUS_SUCCESS;
	int retval = 0;

	sessionData = (struct icp_drvSessionData *)CRYPTO_SESID2LID(sid);
	if (NULL == sessionData) {
		EPRINTK("%s(): OCF Free session called with Null Session ID.\n",
			__FUNCTION__);
		return EINVAL;
	}

	sessionToDeregister = sessionData->sessHandle;

	if ((ICP_SESSION_INITIALISED != sessionData->inUse) &&
	    (ICP_SESSION_RUNNING != sessionData->inUse) &&
	    (ICP_SESSION_DEREGISTERED != sessionData->inUse)) {
		DPRINTK("%s() Session not initialised.\n", __FUNCTION__);
		return EINVAL;
	}

	if (ICP_SESSION_RUNNING == sessionData->inUse) {
		lacStatus = cpaCySymRemoveSession(CPA_INSTANCE_HANDLE_SINGLE,
						  sessionToDeregister);
		if (CPA_STATUS_RETRY == lacStatus) {
			if (ICP_OCF_DRV_STATUS_SUCCESS !=
			    icp_ocfDrvDeregRetry(&sessionToDeregister)) {
				/* the retry function increments the
				   dereg failed count */
				DPRINTK("%s(): LAC failed to deregister the "
					"session. (localSessionId= %p)\n",
					__FUNCTION__, sessionToDeregister);
				retval = EPERM;
			}

		} else if (CPA_STATUS_SUCCESS != lacStatus) {
			DPRINTK("%s(): LAC failed to deregister the session. "
				"localSessionId= %p, lacStatus = %d\n",
				__FUNCTION__, sessionToDeregister, lacStatus);
			icp_atomic_inc(&lac_session_failed_dereg_count);
			retval = EPERM;
		}
	} else {
		DPRINTK("%s() Session not registered with LAC.\n",
			__FUNCTION__);
	}

	icp_ocfDrvFreeOCFSession(sessionData);
	return retval;

}
示例#16
0
static inline int pdp_add_dev(struct pdp_info *dev)
{
	int slot;

   DPRINTK(2, "BEGIN\n");

	if (pdp_get_dev(dev->id)) {
        EPRINTK("pdp_add_dev() Error ..%d already exist \n", dev->id);
		return -EBUSY;
	}

	for (slot = 0; slot < MAX_PDP_CONTEXT; slot++) {
		if (pdp_table[slot] == NULL) {
			pdp_table[slot] = dev;
         DPRINTK(2, "END\n");
			return slot;
		}
	}
   EPRINTK("pdp_add_dev() Error ..%d There is no space to make %d \n", dev->id);
	return -ENOSPC;
}
static void mddi_novatek_lcd_panel_poweroff(void)
{
	struct msm_panel_novatek_pdata *pdata = mddi_novatek_pdata;

	EPRINTK("%s: started.\n", __func__);

	fb_width = 320;
	fb_height = 480;

	if(pdata && pdata->gpio) {
		gpio_set_value(pdata->gpio, 0);
		mdelay(10);
	}
}
static int __init mddi_novatek_lcd_probe(struct platform_device *pdev)
{
	int ret;
	EPRINTK("%s: started.\n", __func__);

	if (pdev->id == 0) {
		mddi_novatek_pdata = pdev->dev.platform_data;
		return 0;
	}

	msm_fb_add_device(pdev);

	ret = device_create_file(&pdev->dev, &dev_attr_lcd_onoff);

	return 0;
}
static int mddi_auo_lcd_probe(struct platform_device *pdev)
{
	int ret;
	EPRINTK("%s: started.\n", __func__);

	if (pdev->id == 0) {
		mddi_auo_pdata = pdev->dev.platform_data;
		return 0;
	}

	msm_fb_add_device(pdev);

/* LGE_CHANGE [[email protected]] 2010-08-28, probe LCD */
	ret = device_create_file(&pdev->dev, &dev_attr_lcd_onoff);

	return 0;
}
static void mddi_novatek_lcd_panel_poweron(void)
{
	struct msm_panel_novatek_pdata *pdata = mddi_novatek_pdata;

	EPRINTK("%s: started.\n", __func__);

	fb_width = 320;
	fb_height = 480;

	if(pdata && pdata->gpio) {
		gpio_set_value(pdata->gpio, 1);
		mdelay(10);
		gpio_set_value(pdata->gpio, 0);
		mdelay(15); /* wait for more than 10ms */
		gpio_set_value(pdata->gpio, 1);
		mdelay(30); /* wait for more than 20ms */
	}
}
ssize_t mddi_auo_lcd_store_onoff(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
	struct platform_device *pdev = to_platform_device(dev); 
	int onoff;

	sscanf(buf, "%d", &onoff);

	EPRINTK("%s: onoff : %d\n", __func__, onoff);
	
	if(onoff) {
		mddi_auo_lcd_on(pdev);
	}
	else {
		mddi_auo_lcd_off(pdev);
	}

	return count;
}
示例#22
0
static int 
cfg_frontend_info(struct xenbus_device *dev, struct netback_accel *bend,
		  int *grants)
{
	/* Get some info from xenbus on the event channel and shmem grant */
	int err = xenbus_gather(XBT_NIL, dev->otherend, 
				"accel-msg-channel", "%u", &bend->msg_channel, 
				"accel-ctrl-page", "%d", &(grants[0]),
				"accel-msg-page", "%d", &(grants[1]),
				"accel-net-channel", "%u", &bend->net_channel,
				NULL);
	if (err)
		EPRINTK("failed to read event channels or shmem grant: %d\n",
			err);
	else
		DPRINTK("got event chan %d and net chan %d from frontend\n",
			bend->msg_channel, bend->net_channel);
	return err;
}
示例#23
0
/*
 * Setup watch on "limits" in the backend vif info to know when
 * configuration has been set
 */
static int setup_config_accel_watch(struct xenbus_device *dev,
				    struct netback_accel *bend)
{
	int err;

	VPRINTK("Setting watch on %s/%s\n", dev->nodename, "limits");

	err = xenbus_watch_path2(dev, dev->nodename, "limits", 
				 &bend->config_accel_watch, 
				 bend_config_accel_change);

	if (err) {
		EPRINTK("%s: Failed to register xenbus watch: %d\n",
			__FUNCTION__, err);
		bend->config_accel_watch.node = NULL;
		return err;
	}
	return 0;
}
static void mddi_auo_lcd_panel_store_poweron(void)
{
//	struct msm_panel_common_pdata *pdata = mddi_auo_pdata;
	struct msm_panel_auo_pdata *pdata = mddi_auo_pdata;

	EPRINTK("%s: started.\n", __func__);

	fb_width = 320;
	fb_height = 480;

	if(pdata && pdata->gpio) {
		gpio_set_value(pdata->gpio, 1);
		mdelay(10);
		gpio_set_value(pdata->gpio, 0);
		mdelay(20);
		gpio_set_value(pdata->gpio, 1);
		mdelay(50);
	}
}
示例#25
0
static int mddi_hitachi_lcd_store_on(void)
{
	EPRINTK("%s: started.\n", __func__);

#if defined(CONFIG_MACH_MSM7X27_THUNDERG) || defined(CONFIG_MACH_MSM7X27_THUNDERC) || defined(CONFIG_MACH_MSM7X27_THUNDERA)
	if (system_state == SYSTEM_BOOTING && mddi_hitachi_pdata->initialized) {
		is_lcd_on = TRUE;
		return 0;
	}
#endif
	// LCD HW Reset
	mddi_hitachi_lcd_panel_store_poweron();
#if defined(CONFIG_MACH_MSM7X27_THUNDERG)
	if (lge_bd_rev <= LGE_REV_E) {
		display_table(mddi_hitachi_initialize_1st, sizeof(mddi_hitachi_initialize_1st)/sizeof(struct display_table));
		mdelay(10);
		display_table(mddi_hitachi_display_on_1st, sizeof(mddi_hitachi_display_on_1st) / sizeof(struct display_table));
	} else {
		display_table(mddi_hitachi_initialize_3rd_p500, sizeof(mddi_hitachi_initialize_3rd_p500)/sizeof(struct display_table));
		mdelay(10);
		display_table(mddi_hitachi_display_on_3rd, sizeof(mddi_hitachi_display_on_3rd) / sizeof(struct display_table));
	}
#elif defined(CONFIG_MACH_MSM7X27_THUNDERA)
	display_table(mddi_hitachi_initialize_1st,
			sizeof(mddi_hitachi_initialize_1st)/sizeof(struct display_table));
	mdelay(10);
	display_table(mddi_hitachi_display_on_1st,
			sizeof(mddi_hitachi_display_on_1st) / sizeof(struct display_table));
#else
	if (lge_bd_rev <= LGE_REV_D) {
		display_table(mddi_hitachi_initialize_1st, sizeof(mddi_hitachi_initialize_1st)/sizeof(struct display_table));
		mdelay(10);
		display_table(mddi_hitachi_display_on_1st, sizeof(mddi_hitachi_display_on_1st) / sizeof(struct display_table));
	} else {
		display_table(mddi_hitachi_initialize_3rd_vs660, sizeof(mddi_hitachi_initialize_3rd_vs660)/sizeof(struct display_table));
		mdelay(10);
		display_table(mddi_hitachi_display_on_3rd, sizeof(mddi_hitachi_display_on_3rd) / sizeof(struct display_table));
	}
#endif
	is_lcd_on = TRUE;
	return 0;
}
示例#26
0
static int vnic_send_buffer_requests(netfront_accel_vnic *vnic,
				     struct netfront_accel_bufpages *bufpages)
{
	int pages, offset, rc = 0, sent = 0;
	struct net_accel_msg msg;

	while (bufpages->page_reqs < bufpages->max_pages) {
		offset = bufpages->page_reqs;

		pages = pow2(log2_le(bufpages->max_pages - 
				     bufpages->page_reqs));
		pages = pages < NET_ACCEL_MSG_MAX_PAGE_REQ ? 
			pages : NET_ACCEL_MSG_MAX_PAGE_REQ;

		BUG_ON(offset < 0);
		BUG_ON(pages <= 0);

		rc = netfront_accel_buf_map_request(vnic->dev, bufpages,
						    &msg, pages, offset);
		if (rc == 0) {
			rc = net_accel_msg_send(vnic->shared_page, 
						&vnic->to_dom0, &msg);
			if (rc < 0) {
				VPRINTK("%s: queue full, stopping for now\n",
					__FUNCTION__);
				break;
			}
			sent++;
		} else {
			EPRINTK("%s: problem with grant, stopping for now\n",
				__FUNCTION__);
			break;
		}

		bufpages->page_reqs += pages;
	}

	if (sent)
		net_accel_msg_notify(vnic->msg_channel_irq);

	return rc;
}
示例#27
0
/* Setup watch on frontend's accelstate */
static int setup_domu_accel_watch(struct xenbus_device *dev,
				  struct netback_accel *bend)
{
	int err;

	VPRINTK("Setting watch on %s/%s\n", dev->otherend, "accelstate");

	err = xenbus_watch_path2(dev, dev->otherend, "accelstate", 
				 &bend->domu_accel_watch, 
				 bend_domu_accel_change);
	if (err) {
		EPRINTK("%s: Failed to register xenbus watch: %d\n",
			__FUNCTION__, err);
		goto fail;
	}
	return 0;
 fail:
	bend->domu_accel_watch.node = NULL;
	return err;
}
示例#28
0
ssize_t mddi_hitachi_lcd_store_onoff(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
	struct platform_device dummy_pdev;
	int onoff; // = simple_strtol(buf, NULL, count);
	sscanf(buf, "%d", &onoff);

	EPRINTK("%s: onoff : %d\n", __func__, onoff);
	
	if(onoff) {
//		display_table(mddi_hitachi_display_on, sizeof(mddi_hitachi_display_on) / sizeof(struct display_table));
		mddi_hitachi_lcd_store_on();
		is_lcd_on = TRUE;
	}
	else {
//		display_table(mddi_hitachi_display_off, sizeof(mddi_hitachi_display_off) / sizeof(struct display_table));
		mddi_hitachi_lcd_off(&dummy_pdev);
		is_lcd_on = FALSE;
	}

	return 0;
}
示例#29
0
static void mddi_hitachi_lcd_panel_store_poweron(void)
{
#if defined(CONFIG_MACH_MSM7X27_THUNDERG) || defined(CONFIG_MACH_MSM7X27_THUNDERC) || defined(CONFIG_MACH_MSM7X27_THUNDERA)
	struct msm_panel_hitachi_pdata *pdata = mddi_hitachi_pdata;
#else
	struct msm_panel_common_pdata *pdata = mddi_hitachi_pdata;
#endif

	EPRINTK("%s: started.\n", __func__);

	fb_width = 320;
	fb_height = 480;

	if(pdata && pdata->gpio) {
	//	gpio_set_value(pdata->gpio, 1);
	//	mdelay(10);
		gpio_set_value(pdata->gpio, 0);
		//mdelay(50);
		gpio_set_value(pdata->gpio, 1);
		//mdelay(50);
	}
}
static int mddi_novatek_lcd_on(struct platform_device *pdev)
{
	EPRINTK("%s: started.\n", __func__);

	if(is_lcd_on == -1) {
		is_lcd_on = TRUE;
		return 0;
	}
	if (system_state == SYSTEM_BOOTING && mddi_novatek_pdata->initialized) {
		is_lcd_on = TRUE;
	}

#ifdef CONFIG_MACH_MSM7X27_THUNDERC_SPRINT
	ts_set_vreg(1);
#endif

	// LCD HW Reset
	mddi_novatek_lcd_panel_poweron();	
	display_table(mddi_novatek_initialize, sizeof(mddi_novatek_initialize)/sizeof(struct display_table));
	// display_table(mddi_novatek_display_on, sizeof(mddi_novatek_display_on) / sizeof(struct display_table));
	is_lcd_on = TRUE;
	return 0;
}