This conference focuses on two quests: one for social justice, the other for sustainability. The first encompasses a range of traditional social science issues like poverty, homelessness, segregation and discrimination, issues that have been given renewed urgency by processes of urban and regional development during the recent phase of globalization. Latterly, the search for sustainability – social and economic as well as ecological – has been given new impetus by the debate about global climate change and also the occurrence of some remarkable natural phenomena – hurricanes, massive fires, and floods, and a devastating tsunami. Both quests have radical implications: each calls into question the viability of current systems of production and consumption.
Please send the title and abstract of your paper to a session organizer and the RC21 Secretary Fernando Diaz Orueta (Fernando.Diaz@ua.es) by April 30, 2007.
The abstract of your paper should be limited to 100 words and include your name, affiliation and email address.
The final programme will be available on the RC21 webpage.
In much of the colonized world many indigenous people live not on their traditional lands - much of which was purloined through the process of European 'settlement' - but in large towns and cities. Those who have migrated from homelands to urban centers within a nation state can experience a sense of displacement at least as significant as that endured by immigrants from other lands. For much of the twentieth century indigenous people in cities struggled to maintain their sense of identity and communal solidarity in the face of social and official pressures to assimilate. Ironically, while indigenous people in cities today are among the most politically active for the causes of their people, they still struggle to have their status recognized. Popular and official prejudice holds that only those continuing to live traditional lives can claim to be authentic. This panel invites contributions from scholars who have undertaken research on/ with urban indigenous people in different parts of the world. It aims to provide a forum for developing an international comparative understanding of how urbanization has shaped indigenous culture/ community and how colonial states might extend social justice to those who are deemed to be living 'in between' tradition and modernity.
Concepts of a just city underlie most studies within urban political economy and motivate progressive planners and policy makers. Largely, however, these concepts have been intuitive rather than theoretically formulated. This panel invites papers that explicitly develop ideas of justice in relation to the urban realm.
Poverty conditions and social inequalities in the city have always been at the center of urban studies. In the recent decades, cities have witnessed intense transformations in several dimensions of social reproduction with strong impact on living conditions, such as the economy, family structures and the State, not to mention geography at different scales. Until the moment, however, the international literature has considered the effect of those processes as quite homogeneous. As a consequence, we know little about the variation of the new poverty conditions present in different national and urban contexts. The goal of this session is to discuss such conditions comparatively, contributing to a better understanding of the reproduction of urban poverty and social inequalities in different social and political contexts. This session welcomes papers that, using empirical research strategies, analyze the characteristics of new poverty and the processes that produce it.
In the 21st century we are living in a period of profound technological, social, economic and cultural changes. Despite the development the efforts made by various agencies, poverty still affects half the world's population. It is a manifestation of injustice prevailing in all societies in general and in the urban areas in particular. The figures are apocalyptic and depict the dangerous situation: 8 million children die each year because of poverty, 150 million children under the age of five suffer from extreme poverty, 100 million children live in the streets and every three seconds poverty kills a child somewhere.
Keeping the above scenario in mind, the present session would attempt to understand the poverty in relation to justice and sustainability. The big question is that whether under such circumstances urban world is sustainable. Why the poor are deprived of even the basic services? Who is responsible for the present situation? What can be done to improve it? Why the planning process has failed in developing countries to reach the target population?
The recent revival of interest in social policy has covered much ground. Nowadays, many Latin American democratic governments -in particular the Mexico City government- have taken the social policy as a means to reach sustainability. For this, the equality is the most important path in any social policy. The goal of any government is to guarantee the well-being and sustainability of the youngest generations.
The objective of this session is to discuss the impacts of social programs (gender, education, health and housing) on the urban inequality. There is evidence that some governments have focused their social programs based on needs of the vulnerable groups, and the outcomes have been the improvement of well-being and perception of the citizens. This session also attempts to attract papers that analyze various social policy proposals designed to reduce the urban inequality gap.
This session is planned as a reflection on the contextual specificity of segregation patterns and trends versus their determination by broad structural forces. It seeks to bring to the fore common traits in segregation processes and discuss whether they are related to specific types of context or simply due to the socio-spatial shifting and sorting, intrinsic in capitalist labor and housing markets. "Global cities" have been the par excellence context where, amidst globalization and pressure for thorough economic restructuring, the impact on their social structure, through changing labor markets, has been considered to be social polarization that eventually translated into increasing spatial polarization involving both gentrification and intensified segregation.
Socio-spatial polarization has evolved to a dominant way of seeing urban societies although such a trend is not often corroborated by empirical evidence even for the most prominent of "global cities". On the broader level of large cities around the world, different welfare systems affecting both labor markets and housing provision systems, different historic paths that formed different political cultures and different forms of discrimination in terms of class, race or ethnicity, and different governance arrangements have formed a variety of settings where diverse segregation patterns and trends have been developed. Does this diversity of outcomes challenge the alleged omnipotence of globalization pressure on any local social regulation scheme to escape from the fate of socio-spatial polarization? Does this diversity of outcomes mean that effective policy action against socio-spatial polarization is possible?
This session invites papers presenting evidence about the increasing (or decreasing) spatial isolation of the poor (or racially or otherwise subordinate groups) as well as the rich; at the same time it invites reflection on the context dependence of presented outcomes.
This is a large area and the topics below are only a few which the session could cover: a) The varied meanings of sustainable housing, b) urban planning and the sustainable city housing under different socio-economic conditions; c) Visions of sustainable housing: from practical to ideal; d) The party politics of sustainable housing; e) Sustainable housing as a discourse, and its effects; f) Sustainable housing as an organizational problem for government; g) Local and central initiative in sustainable housing; h) Pressure groups and the mobilization of actors around sustainable housing; i) Sustainable housing: from attitudes to action at household level; j) Experiences of sustainable housing; l) Producer perspectives on sustainable housing; k) Sustainable housing: a new area of social inequality (e.g. class, gender, ethnicity dimensions); m) Technical innovation vs changed life-styles as 'solutions' to sustainable housing; n) Measures of sustainability in housing.
Urban regeneration is ostensibly about improving the lives of those people living in deprived and disadvantaged urban neighborhoods, both in the inner cities as well as peripheral estates. By and large, the populations of such areas are working class and increasingly multi-ethnic. This session aims to examine what the impacts of urban regeneration policies and projects are on such working-class neighborhoods: are they made more or less sustainable and on who's terms? The theoretical emphasis is one that views urban regeneration in a critical manner by attempting to move beyond both the cliches of urban regeneration professionals and the positivist amassing and dissection of indicators beloved of evaluation researchers.
- Examples of resistance by working-class neighborhoods to urban regeneration.
- Demographic displacement of working-class populations.
- Relationships between urban regeneration professionals and working-class neighborhoods.
- Relationships between incoming gentrifiers and long-term working-class residents.
Cities are both culprits and victims of global climate change. Cities are responsible for 75 percent of global carbon dioxide and simultaneously acutely vulnerable to environmental degradation and global warming. Thirteen of the world's fifteen largest cities are threatened from rising sea levels and storm frequency generated by global climate change. Culprits and victims, major cities of the world are now projecting policies to sustain low carbon society, future generations and ecosystems. Will they succeed? Can urban sustainability policies also promote social and economic justice as the impact of global climate change falls heavily on poor neighborhoods with the highest rates of air pollution linked diseases, like asthma and lung cancer? Are there policy examples that suggest a sustainable city can also be a more egalitarian and just city? This session explores the social consequences of sustainability policies and attempts to develop theories that connect sustainability and justice in the urban and regional context.
Tourist activity is promoting the development of non sustainable urban growth processes in certain territories. This is the case not only of especially vulnerable coastal and mountain areas, but even of urban areas where spaces with a great environmental value are sacrificed in order to stimulate economic growth. Moreover, under neoliberalism policies, the new housing markets dynamics have caused a rise in residential mobility and, particularly, of transnational investment on second home, strongly linked to the so-called residential tourism. As a consequence, different territories of the planet undergo an intensive and disorganized process of urban growth. This session will therefore ask the following questions. Is the growing tourist industry compatible with a process of urbanization based on sustainable criteria? Could tourism become the basic pillar for an alternative strategy to traditional economies? Is ecotourism possible? What are social and environmental impacts of coastal and mountain resorts? What is the impact of major urban development projects (those mainly focused on tourist promotion)? What kind of territories results of the residential tourism expansion? Are social inequalities increasing in these territories? What is the role played by local authorities? Is the tourism-based urban development model being faced by urban movements?
Organizer will be posted soon.
Urban regions around the world are growing in a peculiar new way. The older downtown-suburban dichotomy has given way to new socio-spatial forms which German planner Tom Sieverts has called the "in-between city". In this session, we will explore issues of justice and sustainability in these new urban areas with regards to access and vulnerability. Our focus is on the specific social and physical infrastructure needs of the new urban forms. It is assumed that the metropolitan infrastructures of past generations have given way to the splintered and uneven infrastructures of today. This development is particularly visible in the "in-between city" where the urban region finds its new socio-spatial and political-ecological morphology. This session appeals to all types of empirical cases from the growing global cities of the West and East Asia, to the shrinking cities of Eastern Europe, and the megacities of the global South.
13. The New Megaproject: Sustainable and Just?
Current large-scale projects constitute a new paradigm of city-building that has rough equivalencies to the modernist megaprojects of the mid-20th century, but is framed within a very different set of discourses that correspond to changed and changing macroeconomic and socio-cultural conditions.
We contend that, since the late 1980s, the term Megaproject has been used by scholars to explain a very different set of spatial, economic, ideological and social relations than it formerly described. At the same time, the use of megaprojects as a developmental strategy has shifted from an obvious pursuit of modernist ideals to an urbanization based on the logic of flexible accumulation. Shaped by neoliberalized rationalities, the new megaproject thus creates, and can be used to describe, both large-scale, multi-dimensional, spectacularised landscapes, as well as proliferations of individual, atomized and homogeneous sites.
We invite papers that conceptualize and give definition to the new megaproject through systematic theoretical explorations of current large-scale investments in the urban built environment. We hope thereby to enrich debates around the processes of urban planning, urban politics, and the prospects for sustainability and justice in a contemporary urban context.
The challenges to a practical understanding of what "sustainability" is are a byproduct of outcomes. But how does one create the condition through which outcomes can be addressed? This session explores some examples of initiatives at various stages of development that have some lessons learned and conditions based on structures and processes that have produced various results. Through the evaluation of projects such as Downsview Park in Canada and various Swedish models, we can assess what sustainability needs in terms of processes to produce outcomes. This session also examines lessons learned in the development of a comprehensive mandated sustainability challenge that is integrated in all respects.
Little research work has been done to relate modes of governance (governing relationships that determine decision making mechanisms and political objectives) to sustainable development which involves, among others, organizational changes to achieve simultaneous social, economic and environmental improvements. Few published work has explored how governing relationships among and within the public, private and third sectors have affected a city's sustainable development strategy. The limited literature that exists is derived from western contexts and models peculiar to the Asian setting are still find wanting. To fill this research lacuna, this session invites papers that investigate the relationships between modes of governance and sustainability policy and implementation in Asian cities. Submitted papers should have a distinctive Asian focus, centering on integrated or sectoral (social, economic or environmental) policies surrounding sustainable development and their relationships within the embedded mode of governance.
Everywhere metropolitanization processes are growing in complexity. Relationships between core cities and suburbs have developed around an increased number of functions and activities. New challenges due to economic and social segregation, environmental concerns and adaptability to global trends are on the metropolitan political agenda. Over the past thirty years, local, regional and/or national governments have put forward diverse institutional restructuring often defined in terms of urban governance in order to cope with these issues. In the current globalizing context, do local actors have a say in the future of city-regions? To what extent do recent metropolitan reforms improved the social, economic and cultural life of city-regions? Which actors benefited from these reforms? In conjunction and/or beyond these types of reforms, in what terms should the future of city-regions be defined? Are there important issues, problems or challenges that had been overlooked by the literature on metropolitan governance?
In many societies, the emphasis put on safety, the diffusion of knowledge about the tiniest incidents, the abundance of advice and of information relative to risks and the market supporting such trends create urban fears in return and a demand for more protections. Unsafety and disorder are also products of representations. Modes of representation rely indeed on boundaries (between individuals, cultures, groups, nations), between centers and peripheries and on figures of Otherness – the infiltrated enemy, the alien and the subversive- in the articulation of danger.
The political instrumentalization of fear makes it easier to govern, to mobilize law-abiding citizens against easy targets and to legitimize spontaneous social separatism. Metropolises of the South are not immune. But in such metropolises, institutions frequently find themselves lacking in moral authority and legitimacy to punish criminals. Too little state is thus a catastrophe and self-help is used both by affluent as by poorer residents to secure their daily order. Some norms are internally produced as in gated communities with guards and cameras, but in poor areas as well.
This session intends to examine a number of complex questions: Is urban insecurity as an excuse not to live together? What resources (physical, coercive, social, civic) have cities to deal with risks and threats in times of global uncertainty? How do they transmit a sense of order to both their residents and other actors on whom they depend? How much powerful is the political meaning of public space? Can and should order be co-produced by institutions, by private entrepreneurs and by civil society? If so, what shape should this co-production take?
A central theme of the 2007 RC21 conference is "how can the growing inequalities and injustices of much urban and regional development today be mitigated and reversed?" Many believe that the very process of addressing inequalities is itself unequal. In order to empower those whose interests are excluded from policy decision-making, democratic procedures must be transformed. In New York, changes in the urban land uses must be reviewed by elected community-level boards. In Sao Paulo, Berlin, and other cities, ordinary citizens have been encouraged to participate in budgetary decision-making. In other places, seats at the table in consultative organizations are reserved for disadvantaged target groups. This session will examine inclusionary processes that promote direct citizen participation in urban governance.
This session invites papers on urban participation and governance. Papers on experiments in urban democracy – e.g. deliberative democracy, Stoker's CLEAR model, etc. – as well as empirical analysis of urban politics (e.g. urban movements) are welcome.
What roles do cities play in large scale social movements? In recent years we have witnessed the rise of a variety of potent social justice mobilizations occurring in cities. These campaigns have addressed issues ranging from living wages to environmental justice. While these mobilizations are certainly expressions of specific 'urban' grievances, they are also intimately linked to wider scale networks that span across regional and national borders. This session revives Manuel Castells's 'urban question' by examining how cities contribute to structuring and informing wider scale social movements. The session does this by focusing on the distinctive character of mobilizations occurring in cities and examining how these particular mobilizations become linked to one another through national and transnational networks. We encourage contributors to explore the ways in which particular urban mobilizations are embedded in broader networks, how urban mobilizations contribute to the general movement, and how tensions between the particular and general help shape the content and form contemporary social movements.
- How do cities influence the grievances and issues of actors?
- How do social movement organizations respond to the varying political opportunities found in local, regional, national, and international institutions?
- What are the advantages of organizing campaigns in cities?
- and what ways are urban-based social movement networks different from national and transnational networks?
- Do the resource mobilization capacities of actors differ across spatial scales?
- What kinds of tensions arise between place-based actors?
- Are concepts such as 'nodes' and 'clusters' relevant for understanding multi-scalar social movements?
- What are the different ways of organizing networks across spatial scales?
The role of ethnicity as a mobilising agent is among the most important questions of this century. Conflicts linked to ethnicity have led to significant loss of life and injuries in many countries, and become major elements in impoverishment, undermining human security and sustainable urban development. Although, there have been various studies on peace and conflict which have provided novel theoretical perspectives, however, when assessed jointly, most of the publications particularly on African peace and conflict are relatively weak in terms of systematically providing empirical evidence to substantiate its claims. The literature does not consist of any systematic qualitative cross case study, nor any statistical study trying to substantiate claims of general patterns across the continent. This session will welcome papers based on empirical research on ethnicity and urban conflicts. Papers presenting in-depth case study which include a discussion of urban sustainable peace movements will be particularly welcome.
The right to public space is constitutive of the right to the city and citizenship. It entails the right to be seen and to see others in public and use space as a resource. Public space has always operated through a set of exclusions. This panel examines the exclusions through which the new order and politics of public space emerge in neoliberal urban restructuring. The globalizing city collects a disproportionate share of disenfranchised actors, for many of whom it is through the politics of place that they gain recognition as citizens. Their right to public space is the right to strategic places which provide them with a livelihood, as it is for vendors, beggars, entertainers and prostitutes; the right to a dwelling as in the case of homeless and undocumented slum dwellers; the right to strategic visibility for the poor that earns them recognition and make them escape the confines of locality by becoming a social problem, a problem of the city, tourism and the country's capacity to allure capital. The panel invites contributions that illuminate contemporary politics of public space especially as they are related to the politics of the unprivileged.
In the midst of the processes of ongoing global migration, various metropolitan areas around the world have already experienced ethnically-oriented social changes. In fact, metropolitan centres of the highly industrialized countries, and also the newly industrializing economies, embrace sub-populations of foreign residents, including business expatriates, migrant workers, and many other types of sojourners and settlers. Some groups or organizations, which are composed chiefly of ethnic compatriots, are quite visible in many metropolitan centres: Some have arisen from the efforts of an affluent class or equal status strangers, while others are from under-privileged classes when compared in socio-political terms with host majorities. How do they relate to the host metropolitan communities? And what kind of practices and new initiatives and diverse customs do they bring? Are they influential actors in the development of the doctrines that underguard urban life in host communities? This session is interested in empirical work of any ethnic organizations whose movements, activities, or disciplines have some effects upon the urban lives of host communities.
Many authors claim that 'multiculturalism' is disappearing as a model for integration and coexistence in increasingly plural societies. Some authors are highly critical of the allegedly relativistic character of multiculturalism and they favor more demanding and normative ideals like assimilationism. Other critics, more of the left, attack multiculturalism as a form of essentializing and categorizing politics. For this session, we welcome empirically grounded papers dealing with the transformation of multiculturalism, preferably at the local level (city and neighborhood). Submitted papers should transcend rather sketchy rise-and-decline-pictures of multiculturalism and deal with all kind of transformations and reinventions, like diversity policies. Preferably, papers pay attention to various actors (antimulticulturalists, Islamic and anti-racist counterpublics, et cetera) in different arena's.
Cultural development and equity Culture has become part of urban development rhetoric and practice, ranging from cultural districts, to broader discussion of attractivity of place, multi-culturalism, "creative class," and re-structuring urban economies. Some see culture as an economic generator, making for new possibilities regarding social/spatial arrangements. Some argue that cultural development implies commodification, is a gateway to gentrification, and increases social and spatial polarization. This session proposes to examine these issues analytically and empirically. What drives the demand for cultural development and cultural policy? How does cultural development affect social and spatial inequality? Are there linkages that pose specific types of threats or benefits to people and place? What are the equity considerations as cities engage in cultural development in a post industrial/ post Fordist environment ?
Cultural, ethnic or "racial" boundaries are often dismissed as too vague, fluid or hard to grasp adequately. Yet there are ways to study these boundaries; especially where they are threatened and/or reproduced. Urban life offers fascinating perspectives on these processes, as these boundaries are frequently transgressed in cities. How are these boundaries crossed or maintained in an urban environment, and what is at stake? What are the spatial and cultural expressions of these crossovers, and how do they manifest themselves?
This session's interest does not only lie in those boundaries drawn within cities, but also in local and transnational encounters. How does the local mediate the global, and in which ways are they both transformed in the everyday life of urban residents? This session invites papers that discuss cultural, ethnic and "racial" crossovers in the urban space(s).
The discipline of urban studies is a multi-disciplinary science that uses methods, theories and concepts from sociology, anthropology, economics, geography, architecture and political analysis. One could imagine that such pluralism would easily lead to a lively discussion and debate on methods and methodologies, and to a systematic developing of methods within urban studies community. This has, however, not been the case but instead urban researchers and scholars have often tended to focus on practical and political issues at the costs of contemplating methods. This session will discuss urban studies methods (like comparative urban research, survey methods, analyzing maps and policy documents, interviewing key actors, observing city scenes) and methodologies, aiming to understand better urban studies methods and develop them further; build bridges and establish more connections between theoretical and empirical research on urban issues; discuss whether urban studies could be defined by common method despite the inherent plurality of urban sciences.
From the late 1970s till the early 1990s debates on homeownership and mortgage markets were at the centre of urban sociology and human geography (e.g. David Harvey, Peter Saunders). Although the attention in social science has waned, the importance of homeownership and mortgage markets to cities and societies has not. To the contrary: homeownership rates have steadily increased in most countries and mortgage markets have grown dramatically and now represent almost €12/$15.5 trillion worldwide. This expansion has happened at a time that most social scientists, including those in urban studies, have paid little attention to these issues and have left the analysis of homeownership and mortgage markets to economists. The rise of predatory lending has resulted in a new interest among social scientists in mortgage markets. But more issues beg the attention of social scientists: credit scoring, risk-based pricing, securitization (secondary mortgage markets), globalization of mortgage markets, geographical selection (redlining), and so on. The aim of this session is to put the debate on homeownership and mortgage markets back in the centre of social science in general, and urban studies in particular.
The injustices or 'costs' of urban development have for almost 175 years been written about, albeit initially in the context of sanitary improvement and 'the slum question'. Central to this literary process was the growth of British urban sociology and medical enquiries that utilized social surveys, quantitative statistical analysis and empirical results in order to edify public opinion and identify 'black-spots' in the spatial and psychological cognitive schemata of Victorian settlements. The emergence of public health reports by the likes of medical practitioners and civil servants, such as Thomas Southwood Smith, William Farr and Edwin Chadwick, were thus not only vital components in cementing the correlation between poverty, disease, the environment – key elements in modern 'sustainable' thinking – but in the foundation of modern sociology. In light of past and contemporary parallels relating to assessment of the urban situ this proposal for conference shall attempt to solicit the position of urban historical sociology within the evolution of debates cantering upon social justice and sustainability.
The role of education in moving both sustainability agendas forward is a largely unexamined domain, overlooked in research and in curriculum design alike. This session examines models being developed to orient classrooms toward sustainability, the theories driving these models, and their emergent impacts. Questions to be explored include the value of learning and classroom design across and between traditional disciplines and institutions; the costs and benefits of bridging the traditional divide among elected officials, bureaucrats, community and the world of sustainability practice and; strategies for renegotiating the means and ends of education to enhance its role in sustainability.
The City of Vancouver has less than 600,000 inhabitants, but the greater Vancouver area has nearly 2,000,000 people. Along with other municipalities, Vancouver sends representatives to a body known as the Greater Vancouver Regional District (GVRD) which has been attempting to implement a 'Livable Region' policy with many features aimed at social and economic as well as ecological sustainability.
Since its foundation in the late nineteenth century Vancouver has always been an ethnically diverse place. There were various First Nations in what we now call the Lower Mainland and the early settlers were not just of British or French descent but counted Chinese, Japanese, Sikhs, Americans, Hawaiians and numerous others among their number. In the last thirty years that diversity has only increased and today the city and region hold not only very large populations of Chinese and South Asians, but substantial numbers from Central and Latin America, from just about every Asian and European country, from Iran and many other nations in the so-called Middle East, as well as groups from the former Soviet states and from Africa. Vancouver, indeed the whole of B.C. benefits enormously from this with an amazing array of cultural events and practices, numerous holy-days and the most enticing and affordable restaurants imaginable.
The University of British Columbia (UBC) is one of Canada's largest and most respected universities. With some 35,000 undergraduates, 8,000 graduate students, more than 4,000 faculty, a revenue well in excess of one billion dollars a year and an impressive record of research and innovation it is not surprising that it is attracting excellent students and faculty from around the world. Particularly in the last decade, it has earned an international reputation as a major research institution.
Its main campus enjoys a stunningly beautiful site on Point Grey. Visit the Museum of Anthropology and walk out to look over the Straight of Georgia to Vancouver Island and across to the North Shore. You will find yourself looking at the entrance to the 30 km fiord-like Howe Sound with its islands and snow-capped mountains and the twisting road that leads to Whistler and North America's best ski-ing. In the 1920s the Provincial Government set aside 3,000 acres as 'The Endowment Lands' to provide both a new site for the university, which had little room for expansion in its original downtown location, and a resource from which it could derive development revenue. Although some 1,800 of those original acres were turned into Provincial park, the university still has sufficient land not only for the expansion of its own facilities but for the creation of a whole 'University Town'. It comes as a surprise to most visitors (and students) to realize that UBC is not part of the City of Vancouver, but is actually administered by the Provincial government in Victoria. In practice, it has come to act more and more like an independent municipality, which means assuming responsibility for urban planning. It is this, in part, that led in 1997 to a very self-conscious adoption of 'sustainability' as a development principle – that, and the long history of academic work that related to British Columbia's abundant, but declining natural resources in fish, forests and minerals. And that history of resource dependency helps explain why Vancouver was the birthplace of Greenpeace, among many other environmental organizations.
So, UBC is a particularly appropriate place in which to hold a conference on sustainability. (Visit the main website – ubc.ca – and follow the links to University Town and to Sustainability to find out more).
1) The editorial team of Urban Geography is always seeking out opportunities to expand our publication of cutting-edge urban scholarship, and welcomes submissions of article-length manuscripts from this important conference.
For submission information, visit http://www.bellpub.com/ug/ or contact Co-Editors Peter Muller (pmuller@miami.edu) or Elvin Wyly (ewyly@geog.ubc.ca).
2) Julian Agyeman, editor of Local Environment: The International Journal of Justice and Sustainability, also welcomes paper submissions and offers a special issue from the conference. For this journal, visit http://www.tandf.co.uk/journals/carfax/13549839.html.


text:
Government of Saskatchewan
MIL-OSI Canada: COVID-19 Update: 3 Deaths, 222 New Cases, 117 in Hospital, 128 Recoveries
Source: Government of Saskatchewan
Released on December 13, 2020
Three residents who tested positive for COVID-19 have died. Two (2) new deaths in the group 80+ were reported in Saskatoon and one (1) new death in the age group 70-79 was reported in Regina.
There are 222 new cases of COVID-19 to report in Saskatchewan on December 13, 2020, bringing the provincial total to date to 11,971 cases.
The new cases are located in the Far North West (15), Far North East (9), North West (39), North Central (15), North East (6), Saskatoon (53), Central West (3), Central East (8), Regina (57), South West (4), South Central (6) and South East (5) zones.
Five (5) cases with pending residence information were assigned to the Far North East (from Nov 23 (2)), North West (from Dec 9 (1) and Dec 11 (1)) and Saskatoon (from Dec 11 (1)) zones.
The seven-day average of daily new cases is 264 (21.8 new cases per 100,000 population).
Of the cases, 4,188 cases out of the 11,971 cases are considered active. A total of 7,694 individuals have recovered.
One hundred and seventeen people are in hospital. Ninety-four people are receiving inpatient care: one in the Far North West, six in the North West, 10 in the North Central, 42 in Saskatoon, two in the Central East, 25 in Regina, two in the South Central and six in the South East zones. Twenty-three people are in intensive care: six in the North Central, seven in Saskatoon, nine in Regina, and one in the South West.
Of the 11,971 cases in the province:
549 cases are travelers;
5,336 are community contacts (including mass gatherings);
2,726 have no known exposures; and
3,360 are under investigation by local public health.
Overall in Saskatchewan to date:
415 cases are healthcare workers; however, the source of the infections may not be related to healthcare in all instances.
2,506 cases involve people 19 years of age and under, while the remainder are adults.
4,200 cases are in the 20-39 age range; 3,140 are in the 40-59 age range; 1,599 are in the 60-79 age range; and 521 are in the 80-plus range. Confirmation of age is pending for five cases.
50 per cent of the cases are female and 50 per cent are male.
89 deaths related to COVID-19 have been reported to date.
Of 11,971 confirmed cases:
3,568 cases are from the Saskatoon area
2,551 cases are from the north area (965 north west, 1,204 north central, 382 north east)
2,394 cases are from the Regina area
1,410 cases are from the south area (540 south west, 484 south central, 386 south east)
1,263 cases are from the far north area (769 far north west, 89 far north central, 405 far north east)
756 cases are from the central area (317 central west, 439 central east)
29 cases have pending residence information
To date, 385,948 COVID-19 tests have been processed in Saskatchewan. As of December 11, 2020 when other provincial and national numbers were available, Saskatchewan's per capita rate was 239,229 people tested per million population. The national rate was 332,168 people tested per million population.
Yesterday, 2,948 COVID-19 tests were processed in Saskatchewan.
Public Health Measures
For more information on the current public health measures or to see the Public Health Order, visit https://www.saskatchewan.ca/covid19-measures.
General COVID-19 Information
General public inquiries may be directed to COVID19@health.gov.sk.ca.
Email: media@health.gov.sk.ca
MIL OSI Canada News –
Previous articleMIL-OSI Australia: Man arrested following death in Shepparton
Next articleMIL-OSI Australia: Man dies in Altona fire
MIL-OSI Baltics: Moscow Exchange to start trading options on natural gas and Yandex shares
MIL-OSI Baltics: Risk parameters change for the security RU000A0ZYKW4
MIL-OSI Asia-Pac: Signing of Japanese ODA Loan Agreement with the Republic of Senegal: Contributing to the improvement of rice productivity and the enhancement of...
MIL-OSI United Kingdom: Skip company boss fails to explain £1m expenses
MIL-OSI Asia-Pac: Signing of Japanese ODA Loan Agreement with the Republic of Senegal: Contributing to the improvement of rice productivity and the enhancement of food security through rehabilitating irrigation facilities
MIL-OSI Banking: Signing of Japanese ODA Loan Agreement with the Republic of Senegal: Contributing to the improvement of rice productivity and the enhancement of food security through rehabilitating irrigation facilities

redpajama_set_name: RedPajamaCommonCrawl


Item title reads - California.
New U.S. air base in California. USA, (America). (LNER).
L/S of the largest repair depot in America, M/S's of the hangar doors. M/S as one opens to show the interior. Various shots of men laying the flooring.


text:
Q: You currently do not have a developer account in QBO I am trying to obtain my production keys for my QBO app following the steps in this link
here
However, when I try to start the "App Assessment Questionnaire", I get the error message below:

You currently do not have a developer account, please click here to complete setting up your developer account. Once that is complete you will be able to access the help pages.

This is what I see, and I DO have a developer account. It won't let me continue.
Please help!

UPDATE
I see this error in the address bar:

ErrorCode=ERROR_CREATING_USER&ErrorDescription=License+Limit+Exceeded

UPDATE #2
I tried creating a brand new account, a new app, on a different PC and the same thing happened. So this is not a cache issue.
UPDATE #3
Created 2 support tickets for this issue

*

*#00114423

*#00114415
I had to use a different account to access the help site
https://help.developer.intuit.com

A: I've the same issue since Friday (02/18) and spent hours to figure out what's the problem.

*

*tried from different browsers and different IP addresses

*made a brand new developer account to test with it

*had a 1+ hour chat session with QB support (but not developer support)

*sent an email to an address received from the chat assistant

*sent a feedback at https://www.surveymonkey.com/r/AppAssess
According to the browser's developer tools:

*

*the Start questionnaire button opens this URL:
https://developers.intuit.com/app/developer/appdetail/prod/questionnaire?appId=xxxxx:UUID_of_app

*then it redirects to:
https://login.salesforce.com/services/auth/sso/yyyyyyyyyyy/Intuit_Enterprise?community=https://help.developer.intuit.com

*finally, SSO to salesforce fails and it redirects back to:
https://developer.intuit.com/app/developer/qbpayments/docs/qbms-payments/hosted-paypage/faqs/help-redirect?**ErrorCode=ERROR_CREATING_USER&ErrorDescription=License+Limit+Exceeded**+-+Customer+Community+Login&ProviderId=xxxxxx&startURL=%2Fs%2Fquestionnaire%3Fapp%yyyyyyyyyyyyy
So, it seems to be, QB have reached a license limit at salesforce, which prevents new logins to create and the questionnaire from to load.
And the funny part is: the same thing happens, when I tried to create a support ticket and used the "Ask a question" button at https://help.developer.intuit.com/s/
Which means, I can't start the questionnaire and can't start a ticket about the error either.
I guess, if QB developer accounts whom created support tickets previously or started the questionnarie before the license limit has been reached, they have have a SSO login account at salesforce and able to fill in the form or start new support tickets, but others are stuck because of the license limit.
If somebody have a working QB developer account and able to start a support ticket, please do it, and link this page in it.
Or maybe, we should contact salesforce support to let QB know about the license limit.
I'll give it a try.

A: This seems to have been fixed. I tried running the questionaire and it worked.

A: I have also been having this problem the last several days and had the same lack of success with QB support. The URL callback error I see is:

ErrorCode=REGISTRATION_HANDLER_ERROR&ErrorDescription=Please+sign+the+terms+of+service+before+you+login+to+community

I don't see anywhere I can sign a TOS in my account page - it's possible that in fact QBO hasn't signed a TOS with Salesforce. What a joke.

redpajama_set_name: RedPajamaStackExchange


My name is Grace, and I am an avid runner and the founder of this non-profit organization, Healthy Lifestyle for Youth (HLFY). I began running for fun when I was in middle school and then took it up as a more serious pursuit once I reached high school and joined Dougherty Valley High School's Cross Country and Track & Field Team. Outside of school, I am an enthusiastic foodie and enjoy hiking on local Bay Area trails with my family and mischievous American Eskimo puppy Teddy.
Through my dedication to running, I began to notice a significant issue in my local community and beyond. It was striking to me that so many kids were missing out from maintaining a healthy lifestyle, whether it be due to factors such as lack of resources or simply lack of motivation. Fueled by my newly invigorated passion for running and vision to help other kids, I decided to take action by starting this non-profit that provides kids with both the resources and means necessary to live more active, confident, and fulfilling lives.
Healthy Lifestyle for Youth hosts running programs for kids of all ages, backgrounds, and socioeconomic conditions. The Heart & Sole Youth Running Club meets on a weekly basis at the local sports park to run together as a group through neighborhood street and trails. It also supports kids meeting new friends and playing fun games together while improving their fitness levels. The Shoes that Inspire Program encourages kid to run every day after school with PE teacher supervision. For those kids most in-need, we provide a new running shoes so they can comfortably and successfully participate in leading a healthier lifestyle.
Running a non-profit organization is, in many ways, just like the sport of running itself. There is an incredible amount of drive and dedication required for both, but the meaningful end results make the hard work completely worth it. This is what fuels my passion and commitment, and what makes these activities incredibly valuable and empowering experiences. I aim to expand my non-profit to benefit as many kids across the nation as possible; I hope that they are able not only to live more active lifestyles, but also that they can be more confident in all aspects of their lives — daring to dream big and reach for the stars.


text:
#ifndef _SD_MMC_PCI_HC_DXE_H_
#define _SD_MMC_PCI_HC_DXE_H_

#include <Uefi.h>

#include <IndustryStandard/Pci.h>
#include <IndustryStandard/Emmc.h>
#include <IndustryStandard/Sd.h>

#include <Library/UefiDriverEntryPoint.h>
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiLib.h>
#include <Library/DevicePathLib.h>

#include <Protocol/DevicePath.h>
#include <Protocol/PciIo.h>
#include <Protocol/DriverBinding.h>
#include <Protocol/ComponentName.h>
#include <Protocol/ComponentName2.h>
#include <Protocol/SdMmcOverride.h>
#include <Protocol/SdMmcPassThru.h>

#include <Guid/DebugMask.h>

#include "SdMmcPciHci.h"

extern EFI_COMPONENT_NAME_PROTOCOL  gSdMmcPciHcComponentName;
extern EFI_COMPONENT_NAME2_PROTOCOL gSdMmcPciHcComponentName2;
extern EFI_DRIVER_BINDING_PROTOCOL  gSdMmcPciHcDriverBinding;

extern EDKII_SD_MMC_OVERRIDE        *mOverride;

#define SD_MMC_HC_PRIVATE_SIGNATURE  SIGNATURE_32 ('s', 'd', 't', 'f')

#define SD_MMC_HC_PRIVATE_FROM_THIS(a) \
    CR(a, SD_MMC_HC_PRIVATE_DATA, PassThru, SD_MMC_HC_PRIVATE_SIGNATURE)

#define HOST_CLK_DRIVE_STRENGTH    2
#define HOST_DAT_DRIVE_STRENGTH    2
#define HS200_ALLPASS_PHASE        0
#define HS100_ALLPASS_PHASE        6

//
// Generic time out value, 1 microsecond as unit.
//
#define SD_MMC_HC_GENERIC_TIMEOUT     1 * 1000 * 1000
#define SD_MMC_CLOCK_STABLE_TIMEOUT   3 * 1000

//
// SD/MMC async transfer timer interval, set by experience.
// The unit is 100us, takes 1ms as interval.
//
#define SD_MMC_HC_ASYNC_TIMER   EFI_TIMER_PERIOD_MILLISECONDS(1)
//
// SD/MMC removable device enumeration timer interval, set by experience.
// The unit is 100us, takes 100ms as interval.
//
#define SD_MMC_HC_ENUM_TIMER    EFI_TIMER_PERIOD_MILLISECONDS(100)

typedef enum {
  UnknownCardType,
  SdCardType,
  SdioCardType,
  MmcCardType,
  EmmcCardType
} SD_MMC_CARD_TYPE;

typedef enum {
  RemovableSlot,
  EmbeddedSlot,
  SharedBusSlot,
  UnknownSlot
} EFI_SD_MMC_SLOT_TYPE;

typedef struct {
  BOOLEAN                           Enable;
  EFI_SD_MMC_SLOT_TYPE              SlotType;
  BOOLEAN                           MediaPresent;
  BOOLEAN                           Initialized;
  SD_MMC_CARD_TYPE                  CardType;
} SD_MMC_HC_SLOT;

typedef struct {
  UINTN                               Signature;

  EFI_HANDLE                          ControllerHandle;
  EFI_PCI_IO_PROTOCOL                 *PciIo;

  EFI_SD_MMC_PASS_THRU_PROTOCOL       PassThru;

  UINT64                              PciAttributes;
  //
  // The field is used to record the previous slot in GetNextSlot().
  //
  UINT8                               PreviousSlot;
  //
  // For Non-blocking operation.
  //
  EFI_EVENT                           TimerEvent;
  //
  // For Sd removable device enumeration.
  //
  EFI_EVENT                           ConnectEvent;
  LIST_ENTRY                          Queue;

  SD_MMC_HC_SLOT                      Slot[SD_MMC_HC_MAX_SLOT];
  SD_MMC_HC_SLOT_CAP                  Capability[SD_MMC_HC_MAX_SLOT];
  UINT64                              MaxCurrent[SD_MMC_HC_MAX_SLOT];

  UINT32                              ControllerVersion;

  //
  // Some controllers may require to override base clock frequency
  // value stored in Capabilities Register 1.
  //
  UINT32                              BaseClkFreq[SD_MMC_HC_MAX_SLOT];
} SD_MMC_HC_PRIVATE_DATA;

#define SD_MMC_HC_TRB_SIG             SIGNATURE_32 ('T', 'R', 'B', 'T')

//
// TRB (Transfer Request Block) contains information for the cmd request.
//
typedef struct {
  UINT32                              Signature;
  LIST_ENTRY                          TrbList;

  UINT8                               Slot;
  UINT16                              BlockSize;

  EFI_SD_MMC_PASS_THRU_COMMAND_PACKET *Packet;
  VOID                                *Data;
  UINT32                              DataLen;
  BOOLEAN                             Read;
  EFI_PHYSICAL_ADDRESS                DataPhy;
  VOID                                *DataMap;
  SD_MMC_HC_TRANSFER_MODE             Mode;

  EFI_EVENT                           Event;
  BOOLEAN                             Started;
  UINT64                              Timeout;

  SD_MMC_HC_ADMA_DESC_LINE            *AdmaDesc;
  EFI_PHYSICAL_ADDRESS                AdmaDescPhy;
  VOID                                *AdmaMap;
  UINT32                              AdmaPages;

  SD_MMC_HC_PRIVATE_DATA              *Private;
} SD_MMC_HC_TRB;

#define SD_MMC_HC_TRB_FROM_THIS(a) \
    CR(a, SD_MMC_HC_TRB, TrbList, SD_MMC_HC_TRB_SIG)

//
// Task for Non-blocking mode.
//
typedef struct {
  UINT32                              Signature;
  LIST_ENTRY                          Link;

  UINT8                               Slot;
  EFI_SD_MMC_PASS_THRU_COMMAND_PACKET *Packet;
  BOOLEAN                             IsStart;
  EFI_EVENT                           Event;
  UINT64                              RetryTimes;
  BOOLEAN                             InfiniteWait;
  VOID                                *Map;
  VOID                                *MapAddress;
} SD_MMC_HC_QUEUE;

//
// Prototypes
//
/**
  Execute card identification procedure.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Slot           The slot number of the SD card to send the command to.

  @retval EFI_SUCCESS       The card is identified correctly.
  @retval Others            The card can't be identified.

**/
typedef
EFI_STATUS
(*CARD_TYPE_DETECT_ROUTINE) (
  IN SD_MMC_HC_PRIVATE_DATA             *Private,
  IN UINT8                              Slot
  );

/**
  Sends SD command to an SD card that is attached to the SD controller.

  The PassThru() function sends the SD command specified by Packet to the SD card
  specified by Slot.

  If Packet is successfully sent to the SD card, then EFI_SUCCESS is returned.

  If a device error occurs while sending the Packet, then EFI_DEVICE_ERROR is returned.

  If Slot is not in a valid range for the SD controller, then EFI_INVALID_PARAMETER
  is returned.

  If Packet defines a data command but both InDataBuffer and OutDataBuffer are NULL,
  EFI_INVALID_PARAMETER is returned.

  @param[in]     This           A pointer to the EFI_SD_MMC_PASS_THRU_PROTOCOL instance.
  @param[in]     Slot           The slot number of the SD card to send the command to.
  @param[in,out] Packet         A pointer to the SD command data structure.
  @param[in]     Event          If Event is NULL, blocking I/O is performed. If Event is
                                not NULL, then nonblocking I/O is performed, and Event
                                will be signaled when the Packet completes.

  @retval EFI_SUCCESS           The SD Command Packet was sent by the host.
  @retval EFI_DEVICE_ERROR      A device error occurred while attempting to send the SD
                                command Packet.
  @retval EFI_INVALID_PARAMETER Packet, Slot, or the contents of the Packet is invalid.
  @retval EFI_INVALID_PARAMETER Packet defines a data command but both InDataBuffer and
                                OutDataBuffer are NULL.
  @retval EFI_NO_MEDIA          SD Device not present in the Slot.
  @retval EFI_UNSUPPORTED       The command described by the SD Command Packet is not
                                supported by the host controller.
  @retval EFI_BAD_BUFFER_SIZE   The InTransferLength or OutTransferLength exceeds the
                                limit supported by SD card ( i.e. if the number of bytes
                                exceed the Last LBA).

**/
EFI_STATUS
EFIAPI
SdMmcPassThruPassThru (
  IN     EFI_SD_MMC_PASS_THRU_PROTOCOL         *This,
  IN     UINT8                                 Slot,
  IN OUT EFI_SD_MMC_PASS_THRU_COMMAND_PACKET   *Packet,
  IN     EFI_EVENT                             Event    OPTIONAL
  );

/**
  Used to retrieve next slot numbers supported by the SD controller. The function
  returns information about all available slots (populated or not-populated).

  The GetNextSlot() function retrieves the next slot number on an SD controller.
  If on input Slot is 0xFF, then the slot number of the first slot on the SD controller
  is returned.

  If Slot is a slot number that was returned on a previous call to GetNextSlot(), then
  the slot number of the next slot on the SD controller is returned.

  If Slot is not 0xFF and Slot was not returned on a previous call to GetNextSlot(),
  EFI_INVALID_PARAMETER is returned.

  If Slot is the slot number of the last slot on the SD controller, then EFI_NOT_FOUND
  is returned.

  @param[in]     This           A pointer to the EFI_SD_MMMC_PASS_THRU_PROTOCOL instance.
  @param[in,out] Slot           On input, a pointer to a slot number on the SD controller.
                                On output, a pointer to the next slot number on the SD controller.
                                An input value of 0xFF retrieves the first slot number on the SD
                                controller.

  @retval EFI_SUCCESS           The next slot number on the SD controller was returned in Slot.
  @retval EFI_NOT_FOUND         There are no more slots on this SD controller.
  @retval EFI_INVALID_PARAMETER Slot is not 0xFF and Slot was not returned on a previous call
                                to GetNextSlot().

**/
EFI_STATUS
EFIAPI
SdMmcPassThruGetNextSlot (
  IN     EFI_SD_MMC_PASS_THRU_PROTOCOL        *This,
  IN OUT UINT8                                *Slot
  );

/**
  Used to allocate and build a device path node for an SD card on the SD controller.

  The BuildDevicePath() function allocates and builds a single device node for the SD
  card specified by Slot.

  If the SD card specified by Slot is not present on the SD controller, then EFI_NOT_FOUND
  is returned.

  If DevicePath is NULL, then EFI_INVALID_PARAMETER is returned.

  If there are not enough resources to allocate the device path node, then EFI_OUT_OF_RESOURCES
  is returned.

  Otherwise, DevicePath is allocated with the boot service AllocatePool(), the contents of
  DevicePath are initialized to describe the SD card specified by Slot, and EFI_SUCCESS is
  returned.

  @param[in]     This           A pointer to the EFI_SD_MMMC_PASS_THRU_PROTOCOL instance.
  @param[in]     Slot           Specifies the slot number of the SD card for which a device
                                path node is to be allocated and built.
  @param[in,out] DevicePath     A pointer to a single device path node that describes the SD
                                card specified by Slot. This function is responsible for
                                allocating the buffer DevicePath with the boot service
                                AllocatePool(). It is the caller's responsibility to free
                                DevicePath when the caller is finished with DevicePath.

  @retval EFI_SUCCESS           The device path node that describes the SD card specified by
                                Slot was allocated and returned in DevicePath.
  @retval EFI_NOT_FOUND         The SD card specified by Slot does not exist on the SD controller.
  @retval EFI_INVALID_PARAMETER DevicePath is NULL.
  @retval EFI_OUT_OF_RESOURCES  There are not enough resources to allocate DevicePath.

**/
EFI_STATUS
EFIAPI
SdMmcPassThruBuildDevicePath (
  IN     EFI_SD_MMC_PASS_THRU_PROTOCOL       *This,
  IN     UINT8                               Slot,
  IN OUT EFI_DEVICE_PATH_PROTOCOL            **DevicePath
  );

/**
  This function retrieves an SD card slot number based on the input device path.

  The GetSlotNumber() function retrieves slot number for the SD card specified by
  the DevicePath node. If DevicePath is NULL, EFI_INVALID_PARAMETER is returned.

  If DevicePath is not a device path node type that the SD Pass Thru driver supports,
  EFI_UNSUPPORTED is returned.

  @param[in]  This              A pointer to the EFI_SD_MMC_PASS_THRU_PROTOCOL instance.
  @param[in]  DevicePath        A pointer to the device path node that describes a SD
                                card on the SD controller.
  @param[out] Slot              On return, points to the slot number of an SD card on
                                the SD controller.

  @retval EFI_SUCCESS           SD card slot number is returned in Slot.
  @retval EFI_INVALID_PARAMETER Slot or DevicePath is NULL.
  @retval EFI_UNSUPPORTED       DevicePath is not a device path node type that the SD
                                Pass Thru driver supports.

**/
EFI_STATUS
EFIAPI
SdMmcPassThruGetSlotNumber (
  IN  EFI_SD_MMC_PASS_THRU_PROTOCOL          *This,
  IN  EFI_DEVICE_PATH_PROTOCOL               *DevicePath,
  OUT UINT8                                  *Slot
  );

/**
  Resets an SD card that is connected to the SD controller.

  The ResetDevice() function resets the SD card specified by Slot.

  If this SD controller does not support a device reset operation, EFI_UNSUPPORTED is
  returned.

  If Slot is not in a valid slot number for this SD controller, EFI_INVALID_PARAMETER
  is returned.

  If the device reset operation is completed, EFI_SUCCESS is returned.

  @param[in]  This              A pointer to the EFI_SD_MMC_PASS_THRU_PROTOCOL instance.
  @param[in]  Slot              Specifies the slot number of the SD card to be reset.

  @retval EFI_SUCCESS           The SD card specified by Slot was reset.
  @retval EFI_UNSUPPORTED       The SD controller does not support a device reset operation.
  @retval EFI_INVALID_PARAMETER Slot number is invalid.
  @retval EFI_NO_MEDIA          SD Device not present in the Slot.
  @retval EFI_DEVICE_ERROR      The reset command failed due to a device error

**/
EFI_STATUS
EFIAPI
SdMmcPassThruResetDevice (
  IN EFI_SD_MMC_PASS_THRU_PROTOCOL           *This,
  IN UINT8                                   Slot
  );

//
// Driver model protocol interfaces
//
/**
  Tests to see if this driver supports a given controller. If a child device is provided,
  it further tests to see if this driver supports creating a handle for the specified child device.

  This function checks to see if the driver specified by This supports the device specified by
  ControllerHandle. Drivers will typically use the device path attached to
  ControllerHandle and/or the services from the bus I/O abstraction attached to
  ControllerHandle to determine if the driver supports ControllerHandle. This function
  may be called many times during platform initialization. In order to reduce boot times, the tests
  performed by this function must be very small, and take as little time as possible to execute. This
  function must not change the state of any hardware devices, and this function must be aware that the
  device specified by ControllerHandle may already be managed by the same driver or a
  different driver. This function must match its calls to AllocatePages() with FreePages(),
  AllocatePool() with FreePool(), and OpenProtocol() with CloseProtocol().
  Since ControllerHandle may have been previously started by the same driver, if a protocol is
  already in the opened state, then it must not be closed with CloseProtocol(). This is required
  to guarantee the state of ControllerHandle is not modified by this function.

  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
  @param[in]  ControllerHandle     The handle of the controller to test. This handle
                                   must support a protocol interface that supplies
                                   an I/O abstraction to the driver.
  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.  This
                                   parameter is ignored by device drivers, and is optional for bus
                                   drivers. For bus drivers, if this parameter is not NULL, then
                                   the bus driver must determine if the bus controller specified
                                   by ControllerHandle and the child controller specified
                                   by RemainingDevicePath are both supported by this
                                   bus driver.

  @retval EFI_SUCCESS              The device specified by ControllerHandle and
                                   RemainingDevicePath is supported by the driver specified by This.
  @retval EFI_ALREADY_STARTED      The device specified by ControllerHandle and
                                   RemainingDevicePath is already being managed by the driver
                                   specified by This.
  @retval EFI_ACCESS_DENIED        The device specified by ControllerHandle and
                                   RemainingDevicePath is already being managed by a different
                                   driver or an application that requires exclusive access.
                                   Currently not implemented.
  @retval EFI_UNSUPPORTED          The device specified by ControllerHandle and
                                   RemainingDevicePath is not supported by the driver specified by This.
**/
EFI_STATUS
EFIAPI
SdMmcPciHcDriverBindingSupported (
  IN EFI_DRIVER_BINDING_PROTOCOL *This,
  IN EFI_HANDLE                  Controller,
  IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath
  );

/**
  Starts a device controller or a bus controller.

  The Start() function is designed to be invoked from the EFI boot service ConnectController().
  As a result, much of the error checking on the parameters to Start() has been moved into this
  common boot service. It is legal to call Start() from other locations,
  but the following calling restrictions must be followed or the system behavior will not be deterministic.
  1. ControllerHandle must be a valid EFI_HANDLE.
  2. If RemainingDevicePath is not NULL, then it must be a pointer to a naturally aligned
     EFI_DEVICE_PATH_PROTOCOL.
  3. Prior to calling Start(), the Supported() function for the driver specified by This must
     have been called with the same calling parameters, and Supported() must have returned EFI_SUCCESS.

  @param[in]  This                 A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
  @param[in]  ControllerHandle     The handle of the controller to start. This handle
                                   must support a protocol interface that supplies
                                   an I/O abstraction to the driver.
  @param[in]  RemainingDevicePath  A pointer to the remaining portion of a device path.  This
                                   parameter is ignored by device drivers, and is optional for bus
                                   drivers. For a bus driver, if this parameter is NULL, then handles
                                   for all the children of Controller are created by this driver.
                                   If this parameter is not NULL and the first Device Path Node is
                                   not the End of Device Path Node, then only the handle for the
                                   child device specified by the first Device Path Node of
                                   RemainingDevicePath is created by this driver.
                                   If the first Device Path Node of RemainingDevicePath is
                                   the End of Device Path Node, no child handle is created by this
                                   driver.

  @retval EFI_SUCCESS              The device was started.
  @retval EFI_DEVICE_ERROR         The device could not be started due to a device error.Currently not implemented.
  @retval EFI_OUT_OF_RESOURCES     The request could not be completed due to a lack of resources.
  @retval Others                   The driver failded to start the device.

**/
EFI_STATUS
EFIAPI
SdMmcPciHcDriverBindingStart (
  IN EFI_DRIVER_BINDING_PROTOCOL     *This,
  IN EFI_HANDLE                      Controller,
  IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath
  );

/**
  Stops a device controller or a bus controller.

  The Stop() function is designed to be invoked from the EFI boot service DisconnectController().
  As a result, much of the error checking on the parameters to Stop() has been moved
  into this common boot service. It is legal to call Stop() from other locations,
  but the following calling restrictions must be followed or the system behavior will not be deterministic.
  1. ControllerHandle must be a valid EFI_HANDLE that was used on a previous call to this
     same driver's Start() function.
  2. The first NumberOfChildren handles of ChildHandleBuffer must all be a valid
     EFI_HANDLE. In addition, all of these handles must have been created in this driver's
     Start() function, and the Start() function must have called OpenProtocol() on
     ControllerHandle with an Attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.

  @param[in]  This              A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
  @param[in]  ControllerHandle  A handle to the device being stopped. The handle must
                                support a bus specific I/O protocol for the driver
                                to use to stop the device.
  @param[in]  NumberOfChildren  The number of child device handles in ChildHandleBuffer.
  @param[in]  ChildHandleBuffer An array of child handles to be freed. May be NULL
                                if NumberOfChildren is 0.

  @retval EFI_SUCCESS           The device was stopped.
  @retval EFI_DEVICE_ERROR      The device could not be stopped due to a device error.

**/
EFI_STATUS
EFIAPI
SdMmcPciHcDriverBindingStop (
  IN  EFI_DRIVER_BINDING_PROTOCOL     *This,
  IN  EFI_HANDLE                      Controller,
  IN  UINTN                           NumberOfChildren,
  IN  EFI_HANDLE                      *ChildHandleBuffer
  );

//
// EFI Component Name Functions
//
/**
  Retrieves a Unicode string that is the user readable name of the driver.

  This function retrieves the user readable name of a driver in the form of a
  Unicode string. If the driver specified by This has a user readable name in
  the language specified by Language, then a pointer to the driver name is
  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified
  by This does not support the language specified by Language,
  then EFI_UNSUPPORTED is returned.

  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
                                EFI_COMPONENT_NAME_PROTOCOL instance.

  @param  Language[in]          A pointer to a Null-terminated ASCII string
                                array indicating the language. This is the
                                language of the driver name that the caller is
                                requesting, and it must match one of the
                                languages specified in SupportedLanguages. The
                                number of languages supported by a driver is up
                                to the driver writer. Language is specified
                                in RFC 4646 or ISO 639-2 language code format.

  @param  DriverName[out]       A pointer to the Unicode string to return.
                                This Unicode string is the name of the
                                driver specified by This in the language
                                specified by Language.

  @retval EFI_SUCCESS           The Unicode string for the Driver specified by
                                This and the language specified by Language was
                                returned in DriverName.

  @retval EFI_INVALID_PARAMETER Language is NULL.

  @retval EFI_INVALID_PARAMETER DriverName is NULL.

  @retval EFI_UNSUPPORTED       The driver specified by This does not support
                                the language specified by Language.

**/
EFI_STATUS
EFIAPI
SdMmcPciHcComponentNameGetDriverName (
  IN  EFI_COMPONENT_NAME_PROTOCOL     *This,
  IN  CHAR8                           *Language,
  OUT CHAR16                          **DriverName
  );

/**
  Retrieves a Unicode string that is the user readable name of the controller
  that is being managed by a driver.

  This function retrieves the user readable name of the controller specified by
  ControllerHandle and ChildHandle in the form of a Unicode string. If the
  driver specified by This has a user readable name in the language specified by
  Language, then a pointer to the controller name is returned in ControllerName,
  and EFI_SUCCESS is returned.  If the driver specified by This is not currently
  managing the controller specified by ControllerHandle and ChildHandle,
  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not
  support the language specified by Language, then EFI_UNSUPPORTED is returned.

  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or
                                EFI_COMPONENT_NAME_PROTOCOL instance.

  @param  ControllerHandle[in]  The handle of a controller that the driver
                                specified by This is managing.  This handle
                                specifies the controller whose name is to be
                                returned.

  @param  ChildHandle[in]       The handle of the child controller to retrieve
                                the name of.  This is an optional parameter that
                                may be NULL.  It will be NULL for device
                                drivers.  It will also be NULL for a bus drivers
                                that wish to retrieve the name of the bus
                                controller.  It will not be NULL for a bus
                                driver that wishes to retrieve the name of a
                                child controller.

  @param  Language[in]          A pointer to a Null-terminated ASCII string
                                array indicating the language.  This is the
                                language of the driver name that the caller is
                                requesting, and it must match one of the
                                languages specified in SupportedLanguages. The
                                number of languages supported by a driver is up
                                to the driver writer. Language is specified in
                                RFC 4646 or ISO 639-2 language code format.

  @param  ControllerName[out]   A pointer to the Unicode string to return.
                                This Unicode string is the name of the
                                controller specified by ControllerHandle and
                                ChildHandle in the language specified by
                                Language from the point of view of the driver
                                specified by This.

  @retval EFI_SUCCESS           The Unicode string for the user readable name in
                                the language specified by Language for the
                                driver specified by This was returned in
                                DriverName.

  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.

  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid
                                EFI_HANDLE.

  @retval EFI_INVALID_PARAMETER Language is NULL.

  @retval EFI_INVALID_PARAMETER ControllerName is NULL.

  @retval EFI_UNSUPPORTED       The driver specified by This is not currently
                                managing the controller specified by
                                ControllerHandle and ChildHandle.

  @retval EFI_UNSUPPORTED       The driver specified by This does not support
                                the language specified by Language.

**/
EFI_STATUS
EFIAPI
SdMmcPciHcComponentNameGetControllerName (
  IN  EFI_COMPONENT_NAME_PROTOCOL     *This,
  IN  EFI_HANDLE                      ControllerHandle,
  IN  EFI_HANDLE                      ChildHandle, OPTIONAL
  IN  CHAR8                           *Language,
  OUT CHAR16                          **ControllerName
  );

/**
  Create a new TRB for the SD/MMC cmd request.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Slot           The slot number of the SD card to send the command to.
  @param[in] Packet         A pointer to the SD command data structure.
  @param[in] Event          If Event is NULL, blocking I/O is performed. If Event is
                            not NULL, then nonblocking I/O is performed, and Event
                            will be signaled when the Packet completes.

  @return Created Trb or NULL.

**/
SD_MMC_HC_TRB *
SdMmcCreateTrb (
  IN SD_MMC_HC_PRIVATE_DATA              *Private,
  IN UINT8                               Slot,
  IN EFI_SD_MMC_PASS_THRU_COMMAND_PACKET *Packet,
  IN EFI_EVENT                           Event
  );

/**
  Free the resource used by the TRB.

  @param[in] Trb            The pointer to the SD_MMC_HC_TRB instance.

**/
VOID
SdMmcFreeTrb (
  IN SD_MMC_HC_TRB           *Trb
  );

/**
  Check if the env is ready for execute specified TRB.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Trb            The pointer to the SD_MMC_HC_TRB instance.

  @retval EFI_SUCCESS       The env is ready for TRB execution.
  @retval EFI_NOT_READY     The env is not ready for TRB execution.
  @retval Others            Some erros happen.

**/
EFI_STATUS
SdMmcCheckTrbEnv (
  IN SD_MMC_HC_PRIVATE_DATA           *Private,
  IN SD_MMC_HC_TRB                    *Trb
  );

/**
  Wait for the env to be ready for execute specified TRB.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Trb            The pointer to the SD_MMC_HC_TRB instance.

  @retval EFI_SUCCESS       The env is ready for TRB execution.
  @retval EFI_TIMEOUT       The env is not ready for TRB execution in time.
  @retval Others            Some erros happen.

**/
EFI_STATUS
SdMmcWaitTrbEnv (
  IN SD_MMC_HC_PRIVATE_DATA           *Private,
  IN SD_MMC_HC_TRB                    *Trb
  );

/**
  Execute the specified TRB.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Trb            The pointer to the SD_MMC_HC_TRB instance.

  @retval EFI_SUCCESS       The TRB is sent to host controller successfully.
  @retval Others            Some erros happen when sending this request to the host controller.

**/
EFI_STATUS
SdMmcExecTrb (
  IN SD_MMC_HC_PRIVATE_DATA           *Private,
  IN SD_MMC_HC_TRB                    *Trb
  );

/**
  Check the TRB execution result.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Trb            The pointer to the SD_MMC_HC_TRB instance.

  @retval EFI_SUCCESS       The TRB is executed successfully.
  @retval EFI_NOT_READY     The TRB is not completed for execution.
  @retval Others            Some erros happen when executing this request.

**/
EFI_STATUS
SdMmcCheckTrbResult (
  IN SD_MMC_HC_PRIVATE_DATA           *Private,
  IN SD_MMC_HC_TRB                    *Trb
  );

/**
  Wait for the TRB execution result.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Trb            The pointer to the SD_MMC_HC_TRB instance.

  @retval EFI_SUCCESS       The TRB is executed successfully.
  @retval Others            Some erros happen when executing this request.

**/
EFI_STATUS
SdMmcWaitTrbResult (
  IN SD_MMC_HC_PRIVATE_DATA           *Private,
  IN SD_MMC_HC_TRB                    *Trb
  );

/**
  Execute EMMC device identification procedure.

  Refer to EMMC Electrical Standard Spec 5.1 Section 6.4 for details.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Slot           The slot number of the SD card to send the command to.

  @retval EFI_SUCCESS       There is a EMMC card.
  @retval Others            There is not a EMMC card.

**/
EFI_STATUS
EmmcIdentification (
  IN SD_MMC_HC_PRIVATE_DATA             *Private,
  IN UINT8                              Slot
  );

/**
  Execute EMMC device identification procedure.

  Refer to EMMC Electrical Standard Spec 5.1 Section 6.4 for details.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Slot           The slot number of the SD card to send the command to.

  @retval EFI_SUCCESS       There is a EMMC card.
  @retval Others            There is not a EMMC card.

**/
EFI_STATUS
SdCardIdentification (
  IN SD_MMC_HC_PRIVATE_DATA             *Private,
  IN UINT8                              Slot
  );

/**
  Software reset the specified SD/MMC host controller.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Slot           The slot number of the SD card to send the command to.

  @retval EFI_SUCCESS       The software reset executes successfully.
  @retval Others            The software reset fails.

**/
EFI_STATUS
SdMmcHcReset (
  IN SD_MMC_HC_PRIVATE_DATA *Private,
  IN UINT8                  Slot
  );

/**
  Initial SD/MMC host controller with lowest clock frequency, max power and max timeout value
  at initialization.

  @param[in] Private        A pointer to the SD_MMC_HC_PRIVATE_DATA instance.
  @param[in] Slot           The slot number of the SD card to send the command to.

  @retval EFI_SUCCESS       The host controller is initialized successfully.
  @retval Others            The host controller isn't initialized successfully.

**/
EFI_STATUS
SdMmcHcInitHost (
  IN SD_MMC_HC_PRIVATE_DATA *Private,
  IN UINT8                  Slot
  );

#endif

redpajama_set_name: RedPajamaGithub