Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ebc62fb3 authored by Jeff Garzik's avatar Jeff Garzik
Browse files

Merge branch 'master'

parents 418fbfe9 df7addbb
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
VERSION = 2
VERSION = 2
PATCHLEVEL = 6
PATCHLEVEL = 6
SUBLEVEL = 15
SUBLEVEL = 15
EXTRAVERSION =-rc5
EXTRAVERSION =-rc6
NAME=Affluent Albatross
NAME=Sliding Snow Leopard


# *DOCUMENTATION*
# *DOCUMENTATION*
# To see a list of typical targets execute "make help"
# To see a list of typical targets execute "make help"
+1 −1
Original line number Original line Diff line number Diff line
@@ -1311,7 +1311,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on)


static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
{
{
	drm_radeon_private_t *dev_priv = dev->dev_private;;
	drm_radeon_private_t *dev_priv = dev->dev_private;
	unsigned int mem_size;
	unsigned int mem_size;


	DRM_DEBUG("\n");
	DRM_DEBUG("\n");
+1 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ struct hpsb_host {
        /* this nodes state */
        /* this nodes state */
        unsigned in_bus_reset:1;
        unsigned in_bus_reset:1;
        unsigned is_shutdown:1;
        unsigned is_shutdown:1;
	unsigned resume_packet_sent:1;


        /* this nodes' duties on the bus */
        /* this nodes' duties on the bus */
        unsigned is_root:1;
        unsigned is_root:1;
+57 −10
Original line number Original line Diff line number Diff line
@@ -1349,6 +1349,33 @@ static void nodemgr_update_pdrv(struct node_entry *ne)
}
}




/* Write the BROADCAST_CHANNEL as per IEEE1394a 8.3.2.3.11 and 8.4.2.3.  This
 * seems like an optional service but in the end it is practically mandatory
 * as a consequence of these clauses.
 *
 * Note that we cannot do a broadcast write to all nodes at once because some
 * pre-1394a devices would hang. */
static void nodemgr_irm_write_bc(struct node_entry *ne, int generation)
{
	const u64 bc_addr = (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL);
	quadlet_t bc_remote, bc_local;
	int ret;

	if (!ne->host->is_irm || ne->generation != generation ||
	    ne->nodeid == ne->host->node_id)
		return;

	bc_local = cpu_to_be32(ne->host->csr.broadcast_channel);

	/* Check if the register is implemented and 1394a compliant. */
	ret = hpsb_read(ne->host, ne->nodeid, generation, bc_addr, &bc_remote,
			sizeof(bc_remote));
	if (!ret && bc_remote & cpu_to_be32(0x80000000) &&
	    bc_remote != bc_local)
		hpsb_node_write(ne, bc_addr, &bc_local, sizeof(bc_local));
}


static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int generation)
static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int generation)
{
{
	struct device *dev;
	struct device *dev;
@@ -1360,6 +1387,8 @@ static void nodemgr_probe_ne(struct host_info *hi, struct node_entry *ne, int ge
	if (!dev)
	if (!dev)
		return;
		return;


	nodemgr_irm_write_bc(ne, generation);

	/* If "needs_probe", then this is either a new or changed node we
	/* If "needs_probe", then this is either a new or changed node we
	 * rescan totally. If the generation matches for an existing node
	 * rescan totally. If the generation matches for an existing node
	 * (one that existed prior to the bus reset) we send update calls
	 * (one that existed prior to the bus reset) we send update calls
@@ -1413,9 +1442,25 @@ static void nodemgr_node_probe(struct host_info *hi, int generation)
	return;
	return;
}
}


/* Because we are a 1394a-2000 compliant IRM, we need to inform all the other
static int nodemgr_send_resume_packet(struct hpsb_host *host)
 * nodes of the broadcast channel.  (Really we're only setting the validity
{
 * bit). Other IRM responsibilities go in here as well. */
	struct hpsb_packet *packet;
	int ret = 1;

	packet = hpsb_make_phypacket(host,
			0x003c0000 | NODEID_TO_NODE(host->node_id) << 24);
	if (packet) {
		packet->no_waiter = 1;
		packet->generation = get_hpsb_generation(host);
		ret = hpsb_send_packet(packet);
	}
	if (ret)
		HPSB_WARN("fw-host%d: Failed to broadcast resume packet",
			  host->id);
	return ret;
}

/* Perform a few high-level IRM responsibilities. */
static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
{
{
	quadlet_t bc;
	quadlet_t bc;
@@ -1424,13 +1469,8 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
	if (!host->is_irm || host->irm_id == (nodeid_t)-1)
	if (!host->is_irm || host->irm_id == (nodeid_t)-1)
		return 1;
		return 1;


	host->csr.broadcast_channel |= 0x40000000;  /* set validity bit */
	/* We are a 1394a-2000 compliant IRM. Set the validity bit. */

	host->csr.broadcast_channel |= 0x40000000;
	bc = cpu_to_be32(host->csr.broadcast_channel);

	hpsb_write(host, LOCAL_BUS | ALL_NODES, get_hpsb_generation(host),
		   (CSR_REGISTER_BASE | CSR_BROADCAST_CHANNEL),
		   &bc, sizeof(quadlet_t));


	/* If there is no bus manager then we should set the root node's
	/* If there is no bus manager then we should set the root node's
	 * force_root bit to promote bus stability per the 1394
	 * force_root bit to promote bus stability per the 1394
@@ -1463,6 +1503,13 @@ static int nodemgr_do_irm_duties(struct hpsb_host *host, int cycles)
		}
		}
	}
	}


	/* Some devices suspend their ports while being connected to an inactive
	 * host adapter, i.e. if connected before the low-level driver is
	 * loaded.  They become visible either when physically unplugged and
	 * replugged, or when receiving a resume packet.  Send one once. */
	if (!host->resume_packet_sent && !nodemgr_send_resume_packet(host))
		host->resume_packet_sent = 1;

	return 1;
	return 1;
}
}


+2 −2
Original line number Original line Diff line number Diff line
@@ -12,9 +12,9 @@
 *   This is a device driver for the OneNAND flash for generic boards.
 *   This is a device driver for the OneNAND flash for generic boards.
 */
 */


#include <linux/device.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/onenand.h>
#include <linux/mtd/onenand.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/partitions.h>
@@ -39,7 +39,7 @@ static int __devinit generic_onenand_probe(struct device *dev)
{
{
	struct onenand_info *info;
	struct onenand_info *info;
	struct platform_device *pdev = to_platform_device(dev);
	struct platform_device *pdev = to_platform_device(dev);
	struct onenand_platform_data *pdata = pdev->dev.platform_data;
	struct flash_platform_data *pdata = pdev->dev.platform_data;
	struct resource *res = pdev->resource;
	struct resource *res = pdev->resource;
	unsigned long size = res->end - res->start + 1;
	unsigned long size = res->end - res->start + 1;
	int err;
	int err;
Loading